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/ ? 请问要怎样修复?求大神帮忙下谢谢!
你的urlpatterns 中route参数包含正则表达式,应用
re_path
,特殊字符串(如<slug:title>
)时用path
,route本身是一个字符串类型,但在path 与 re_path 函数内其格式不同,使用path函数可进行类型检查。
用
path
时route参数传关键字,而用re_path
正则表达式字符串则传位置参数给视图对象