Missverständnisse über URLs mit regulären Ausdrücken im Django-Framework

小云云
Freigeben: 2023-03-19 17:50:01
Original
1781 Leute haben es durchsucht

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})
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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-(?Pd+)-(?Pd+)', Ansichten. detail),

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!