2017-07-05 8 views
1

Menschen nicht. Ich bin ein Anfänger Django Entwickler so leid, wenn es eine grundlegende Frage ist.Django zeigt die angeforderte Ansicht

Ich habe eine Webseite, die eine Liste von Filmen zeigt und jeder Film hat eine Detailansicht, aber aus irgendeinem Grund wird die Detailansicht nie gerendert.

#views.py 

def index(request): 
    latest_movies = Movie.objects.order_by('-movie_id')[:5] 

    template = loader.get_template('ytsmirror/index.html') 
    context = { 
     'latest_movies' : latest_movies, 
    } 

    return HttpResponse(template.render(context, request)) 

def detail(request, movie_id): 

    movie = Movie.objects.get(movie_id=movie_id) 
    template = loader.get_template('ytsmirror/details.html') 

    context = { 
     'movie' : movie, 
     'plot': 'Lorem impsum', 
    } 

    return HttpResponse(template.render(context, request)) 

Und mein urls.py

#urls.py 

from django.conf.urls import url 

from . import views 

app_name = 'ytsmirror' 
urlpatterns = [ 
    url(r'$', views.index, name='index'), 
    url(r'^(?P<movie_id>\d{4})$', views.detail, name='detail'), 
] 

Wenn ich versuche,/zu erreichen ytsmirror/4200/zum Beispiel, ich erhalte keine Fehler und Django erreicht offenbar das richtige Muster URL aber doesn‘ Um die Detailansicht zu rendern, bleibt sie in der Indexansicht ohne Änderungen.

Was mache ich falsch? Vielen Dank.

+1

versuchen, url (r '$', ansichten.index, name = 'index') zu ersetzen mit: url (r '^ $', ansichten.index, name = 'index') – KePe

+0

Es hat funktioniert. Vielen Dank! Kannst du erklären, was passiert ist? – AirieFenix

+1

@pythad Erklärung ist richtig. – KePe

Antwort

2

url(r'$', views.index, name='index') passt das Ende der Zeichenfolge, so im Grunde wird es jede URL entsprechen, deshalb funktioniert der Code nicht. Sie müssen url(r'$', views.index, name='index') mit url(r'^$', views.index, name='index') ersetzen, so dass es nur leerer url

^ behauptet übereinstimmen Position am Anfang des Strings

$ Position am Ende des Strings oder vor dem Leitungsabschluss direkt am Ende behauptet der Zeichenfolge (falls vorhanden)

Verwandte Themen