开发者社区> 问答> 正文

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/ ? 请问要怎样修复?求大神帮忙下谢谢!

展开
收起
几许相思几点泪 2019-12-29 18:50:34 833 0
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'),
        ...
    ]
    
    2019-12-29 18:50:55
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载