Maison  >  Article  >  développement back-end  >  Malentendus sur les URL d'expressions régulières dans le framework Django

Malentendus sur les URL d'expressions régulières dans le framework Django

小云云
小云云original
2018-01-29 09:38:321778parcourir

En utilisant Django pour développer des sites Web, vous pouvez concevoir de très belles règles d'URL. Si les règles de correspondance d'URL (y compris les expressions régulières) sont mieux organisées, la structure d'affichage sera plus claire et plus facile à maintenir. Mais il peut y avoir quelques malentendus. Résumons-les ci-dessous. J'espère que c'est utile à tout le monde.

Question :

La vidéo que j'ai étudiée a probablement été enregistrée en 2015, et la version de Django utilisée est relativement ancienne. Pour l'URL d'expression régulière, url est utilisé ("url(r'. ^admin/', admin.site.urls)"). Lorsque je m'exerçais moi-même, j'ai téléchargé la dernière version et l'URL de l'expression régulière utilisait la méthode de chemin exact ("path('admin/', admin.site.urls)"). Au début, lorsqu'une paire était jumelée, elle réussissait, donc je n'ai pas prêté trop d'attention à ce détail.

Jusqu'à plus tard, lorsque plusieurs expressions régulières correspondent (path('detail-(d+).html', vues.detail),), l'erreur "page introuvable" sera toujours signalée. Je l'ai vérifié plusieurs fois. C'est évidemment exactement la même chose. Pourquoi ça ne marche pas ? En fait, la couleur semble un peu terne, mais je ne sais pas pourquoi. Plus tard, après avoir vérifié les documents de version concernés, j'ai finalement trouvé une solution !

Le code correspondant est joint ci-dessous :

1 Il s'agit du fichier py le plus important, et les autres sont presque les mêmes.

2. Autres codes associés :

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>

De plus, lorsque l'URL doit transmettre plusieurs données, elle doit être transmise strictement dans l'ordre et la définition de la fonction doit avoir un nombre correspondant de paramètres. Bien sûr, vous pouvez. utiliser des paramètres universels pour recevoir n'importe quel nombre de participants

L'expression régulière couramment utilisée est : url(r'^detail-(?Pd+)-(?Pd+)', vues. detail),

La fonction de détail correspondante est la suivante : def detail(request, *args, **kwargs):pass

Recommandations associées :

Basé sur le framework Django Explication détaillée du déploiement du site Web

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn