Heim > Artikel > Backend-Entwicklung > Missverständnisse über URLs mit regulären Ausdrücken im Django-Framework
Mit Django können Sie sehr schöne URL-Regeln entwerfen. Wenn die URL-Übereinstimmungsregeln (einschließlich regulärer Ausdrücke) besser organisiert sind, wird die Ansichtsstruktur klarer und einfacher zu pflegen. Es kann jedoch zu Missverständnissen kommen. Fassen wir diese im Folgenden zusammen. Ich hoffe, es ist für alle nützlich.
Frage:
Das Video, das ich studiert habe, wurde wahrscheinlich im Jahr 2015 aufgenommen und die darin verwendete Django-Version ist relativ alt. Für die reguläre Ausdrucks-URL wird url verwendet ("url(r'). ^admin/', admin.site.urls),")-Methode. Als ich selbst geübt habe, habe ich die neueste Version heruntergeladen und die URL für reguläre Ausdrücke verwendete die genaue Pfadmethode („path('admin/', admin.site.urls)“). Am Anfang, als ein Paar zusammengebracht wurde, war es erfolgreich, daher habe ich diesem Detail nicht allzu viel Aufmerksamkeit geschenkt.
Wenn mehrere reguläre Ausdrücke übereinstimmen (path('detail-(d+).html', view.detail),) wird immer der Fehler „Seite nicht gefunden“ gemeldet. Ich habe es mehrmals überprüft. Es ist offensichtlich genau das Gleiche. Warum kann es nicht funktionieren? Eigentlich fühlt sich die Farbe etwas anders an, aber ich weiß nicht warum. Später, nachdem ich die relevanten Versionsdokumente überprüft hatte, fand ich endlich eine Lösung!
Der relevante Code ist unten angehängt:
1. Dies ist die wichtigste py-Datei, und die anderen sind fast gleich.
2. Andere verwandte Codes:
views.py
def detail(request,nid): # print(nid) # return HttpResponse(nid) detail_info = USER_DICT[nid] return render(request,'detail.html',{'detail_info':detail_info})
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <ul> {% for k,v in user_dict.items %} <li><a target="_blank" href="/detail-{{ k }}.html" rel="external nofollow" >{{ v.name }}</a></li> {% endfor %} </ul> </body> </html>
detail.py
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>详细信息</h1> <h6>用户名:{{ detail_info.name }}</h6> <h6>邮箱:{{ detail_info.email }}</h6> </body> </html>
Wenn die URL außerdem mehrere Daten übergeben muss, muss diese streng der Reihe nach übergeben werden, und die Funktionsdefinition muss natürlich über eine entsprechende Anzahl von Parametern verfügen Verwenden Sie universelle Parameter, um eine beliebige Anzahl von Teilnehmern zu empfangen
Der häufig verwendete reguläre Ausdruck ist: url(r'^detail-(?P
Die entsprechende Detailfunktion sieht so aus: def detail(request, *args, **kwargs):pass
Verwandte Empfehlungen:
Basierend auf dem Django-Framework. Detaillierte Erläuterung der Website-Bereitstellung
Das obige ist der detaillierte Inhalt vonMissverständnisse über URLs mit regulären Ausdrücken im Django-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!