django path 语法问题

django path 语法问题

django path 语法问题

from django.urls import path
from . import views
app_name='pizzas'
urlpatterns=[
    path('',views.index,name='index'),
    path('pizza/',views.pizzas,name='pizzas'),
    path('pizza/(?P<pizza_id>\d+)/',views.pizza,name='pizza')
    ]
这是views.py的
from django.shortcuts import render
from .models import Pizza
# Create your views here.
def index(request):
    return render(request,'index.html')
def pizzas(request):
    pizzas=Pizza.objects.all()
    context={'pizzas':pizzas}
    return render(request,'pizzas.html',context)
def pizza(request,pizza_id):
    pizza=Pizza.objects.get(id=pizza_id)
    toppings=pizza.topping_set.all()
    context={'pizza':pizza,'toppings':toppings}
    return render(request,'pizza.html',context)
这是pizzas.html的
{% extends "base.html" %}

{% block content %} 
  <p>Pizzas</p> 
  <ul>
    {% for pizza in pizzas %}
      <li><a href ="{% url 'pizzas:pizza' pizza.id %}" >{{pizza}}</a></li>
    {% empty %}
      <li>No pizzas have been added yet.</li>
    {% endfor %}
  </ul>
{% endblock content %}

然后我的问题是为什么我的链接那边不是http://localhost:8000/pizza/1/ ? 请问要怎样修复?求大神帮忙下谢谢!

pardon110
最佳答案

你的urlpatterns 中route参数包含正则表达式,应用 re_path ,特殊字符串(如<slug:title> )时用path

re_path(route,view,kwargs = None,name = None)

route本身是一个字符串类型,但在path 与 re_path 函数内其格式不同,使用path函数可进行类型检查。
path 时route参数传关键字,而用 re_path 正则表达式字符串则传位置参数给视图对象

from django.urls import include, re_path

urlpatterns = [
    re_path(r'^index/$', views.index, name='index'),
    re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
    ...
]
5年前 评论
weixiang_1120 (楼主) 5年前
讨论数量: 1
pardon110

你的urlpatterns 中route参数包含正则表达式,应用 re_path ,特殊字符串(如<slug:title> )时用path

re_path(route,view,kwargs = None,name = None)

route本身是一个字符串类型,但在path 与 re_path 函数内其格式不同,使用path函数可进行类型检查。
path 时route参数传关键字,而用 re_path 正则表达式字符串则传位置参数给视图对象

from django.urls import include, re_path

urlpatterns = [
    re_path(r'^index/$', views.index, name='index'),
    re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
    ...
]
5年前 评论
weixiang_1120 (楼主) 5年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!