2016-04-16 3 views
0

Ich habe an diesem für ein paar Tage abgehackt ohne Ahnung, warum es nicht funktioniert. Ich habe zwei Ansichten, eine zum Auflisten von Werkzeugen und eine zum Auflisten von Teilen. Ich habe auch die Liste und die Detail-URL für beide. Beide Listenansichten funktionieren und die Werkzeugdetailansicht funktioniert, aber wenn ich auf ein Teilelement klicke, um das Detail zu sehen, wird die korrekte URL im Browser angezeigt, aber ich erhalte einen Fehler wie im Screenshot unten gezeigt um die Ansicht tool_detail zu verwenden. Danke für's Nachsehen.Widersprüchliche Django URLs

enter image description here

Hier ist mein Code für die Überprüfung:

url:

from .views import tool_list, part_list, tool_detail, part_detail 

urlpatterns = [ 

    url(r'^products/tools/$', tool_list, name='tool_list'), 
    url(r'^products/(?P<category>[^\.]+)/(?P<slug>[^\.]+)/$', tool_detail, name='tool_detail'), 

    url(r'^products/parts/$', part_list, name='part_list'), 
    url(r'^products/(?P<category>[^\.]+)/(?P<slug>[^\.]+)/$', part_detail, name='part_detail'), 

] 

Ansicht:

def tool_list(request): 
    tools = Tool.objects.prefetch_related('uploads').all() 
    return render(request, 'tool_list.html', {'tools': tools}) 


def tool_detail(request, **kwargs): 
    tool = get_object_or_404(Tool, slug=kwargs.get('slug')) 
    return render(request, 'tool_detail.html', {'tool': tool}) 


def part_list(request): 
    parts = Part.objects.prefetch_related('uploads').all() 
    return render(request, 'part_list.html', {'parts': parts}) 


def part_detail(request, **kwargs): 
    part = get_object_or_404(Part, slug=kwargs.get('slug')) 
    return render(request, 'part_detail.html', {'part': part}) 

Modelle

class Part(Timestamp): 
    model_number = models.ForeignKey(ModelNumber, related_name='part_model_number') 
    category = models.ForeignKey(Category, related_name='part_category') 
    price = models.DecimalField(max_digits=10, decimal_places=2) 
    title = models.CharField(max_length=250) 
    slug = models.SlugField(help_text="slug-title-should-be-like-this") 
    ... 

class Tool(Timestamp): 
    model_number = models.ForeignKey(ModelNumber, related_name='tool_model_number') 
    price = models.DecimalField(max_digits=10, decimal_places=2) 
    title = models.CharField(max_length=250) 
    slug = models.SlugField(help_text="slug-title-should-be-like-this") 
    category = models.ForeignKey(Category, related_name='tool_category') 
    ... 
+0

Haben Sie das zweite und vierte URL-Muster angezeigt? –

+0

Nicht sicher, was du meinst ... ja, ich habe sie gesehen –

Antwort

1

Das erste URL-Muster, das paßt, was Django wird im Hinblick auf Versand verwenden. Die zweite URL stimmt überein, sodass die tool_detail Ansicht verwendet wird.

+0

Ok, dann bin ich verwirrt, wie man meine Ansichten einrichtet. Die URLs werden nicht basierend auf dem Namen aufgerufen? –

+1

Ich konnte es beheben, indem ich meine detaillierten URL - Pfade zu '... products/tools/(? P [^ \.] +)/...' und '... products/parts/(? P [^ \.] +)/... ' –

+0

Ausgezeichnet. Das war mein nächster Vorschlag, aber Sie haben mich dazu geschlagen –