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,
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'),
...
]
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。