Heim  >  Artikel  >  Backend-Entwicklung  >  Missverständnisse über URLs mit regulären Ausdrücken im Django-Framework

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

小云云
小云云Original
2018-01-29 09:38:321815Durchsuche

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-(?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!

Stellungnahme:
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