如何解决Django 语法错误
目前正在进行 PythonCrashCourse2ndEd 的练习。 (第 18 章,例 8),我收到了 SyntaxError: Invalid Syntax on urls.py。 (第 13 行 path('pizza/',views.index,name='pizza),我尝试将文件直接导入到 shell,它给了我同样的错误。
urls.py
"""Defines URL patterns for pizzas"""
from django.urls import path
from . import views
app_name = 'pizzas'
urlpatterns = [
#Home page
path('',name='index')
#Page that shows all the pizzas.
path('pizza/',pizzas.index,name='pizza')
]
views.py
from django.shortcuts import render
from .models import Pizza
def index(request):
"""The home page for pizzas."""
return render(request,'pizzas/index.html')
def pizzas(request):
"""Show all the pizzas"""
pizzas = Pizza.objects.all()
context = {'pizzas': pizzas}
return render(request,'pizzas/pizzas.html',context)
pizzas.html
<!--Inherits from base.html-->
{% extends "pizzas/base.html" %}
{% block content %}
<p>Pizzas</p>
<ul>
{% for pizza in pizzas %}
<li>{{ pizza }}</li>
{% empty %}
<li>No pizzas have been added yet.</li>
{% endfor %}
</ul>
{% endblock content %}
>>> import pizzas.urls
Traceback (most recent call last):
File "<console>",line 1,in <module>
File "C:\Users\heyale\OneDrive\Desktop\pizzeria\pizzas\urls.py",line 13
path('pizza/',name='pizza')
解决方法
您在第一个路径之后遗漏了逗号,并且在 urlpatterns 中遗漏了右括号“]”。应该是:
urlpatterns = [
#Home page
path('',views.index,name='index'),#Page that shows all the pizzas.
path('pizza/',name='pizza')
]
,
我想知道您是否也注意到 ,
列表中缺少的不仅仅是 urlpatterns
。但您也一直在尝试使用不适合您的披萨路径 'pizza/'
的视图。
你拥有的是:
urlpatterns = [
#Home page
path('',name='index')
#Page that shows all the pizzas.
path('pizza/',pizzas.index,name='pizza')
]
应该是什么:
urlpatterns = [
#Home page
path('',# comma added here
#Page that shows all the pizzas.
path('pizza/',views.pazzas,name='pizza') # changed pizzas.index to views.pazzas
]
,
urlpatterns 是一个数组,所以你必须用逗号分隔路径元素:
urlpatterns = [
#Home page
path('',path('pizza/',name='pizza')
]
要获取 django shell 中的所有 URL 模式,请输入:
import urls
def show_urls(urllist,depth=0):
for entry in urllist:
print(" " * depth,entry.regex.pattern)
if hasattr(entry,'url_patterns'):
show_urls(entry.url_patterns,depth + 1)
show_urls(urls.urlpatterns)
,
在 urls.py 中,您为 index 和pizza 设置了相同的路径。您正在为比萨饼路由 (def index) 函数。
你应该这样做,它会帮助你
from django.urls import path
from . import views
app_name = 'pizzas'
urlpatterns = [
#Home page
path('',views.pizza,name='pizza')
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。