Django 语法错误
Django SyntaxError
目前正在做 PythonCrashCourse2ndEd 的练习。 (Ch.18, Ex.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('', views.index, 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/', views.index, name='pizza')
您在第一个路径后缺少逗号,并且在 urlpatterns 中还缺少右括号“]”。应该是:
urlpatterns = [
#Home page
path('', views.index, name='index'),
#Page that shows all the pizzas.
path('pizza/', views.index, name='pizza')
]
在 urls.py 中,您为 index 和 pizza 放置了相同的路径。您正在为披萨路由 (def index) 函数。
你应该这样做,它会帮助你
from django.urls import path
from . import views
app_name = 'pizzas'
urlpatterns = [
#Home page
path('', views.index, name='index')
#Page that shows all the pizzas.
path('pizza/', views.pizza, name='pizza')
]
urlpatterns 是一个数组,所以你必须用逗号分隔路径元素:
urlpatterns = [
#Home page
path('', views.index, name='index'),
path('pizza/', views.index, name='pizza')
]
要获取 django 中的所有 URL 模式 shell 输入:
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)
我想知道您是否也注意到它不仅仅是 urlpatterns
列表中缺少的 ,
。但是您也一直在尝试使用不适合您的披萨路径的视图 'pizza/'
.
你拥有的是:
urlpatterns = [
#Home page
path('', views.index, name='index')
#Page that shows all the pizzas.
path('pizza/', pizzas.index, name='pizza')
]
应该是什么:
urlpatterns = [
#Home page
path('', views.index, name='index'), # comma added here
#Page that shows all the pizzas.
path('pizza/', views.pazzas, name='pizza') # changed pizzas.index to views.pazzas
]
目前正在做 PythonCrashCourse2ndEd 的练习。 (Ch.18, Ex.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('', views.index, 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/', views.index, name='pizza')
您在第一个路径后缺少逗号,并且在 urlpatterns 中还缺少右括号“]”。应该是:
urlpatterns = [
#Home page
path('', views.index, name='index'),
#Page that shows all the pizzas.
path('pizza/', views.index, name='pizza')
]
在 urls.py 中,您为 index 和 pizza 放置了相同的路径。您正在为披萨路由 (def index) 函数。
你应该这样做,它会帮助你
from django.urls import path
from . import views
app_name = 'pizzas'
urlpatterns = [
#Home page
path('', views.index, name='index')
#Page that shows all the pizzas.
path('pizza/', views.pizza, name='pizza')
]
urlpatterns 是一个数组,所以你必须用逗号分隔路径元素:
urlpatterns = [
#Home page
path('', views.index, name='index'),
path('pizza/', views.index, name='pizza')
]
要获取 django 中的所有 URL 模式 shell 输入:
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)
我想知道您是否也注意到它不仅仅是 urlpatterns
列表中缺少的 ,
。但是您也一直在尝试使用不适合您的披萨路径的视图 'pizza/'
.
你拥有的是:
urlpatterns = [
#Home page
path('', views.index, name='index')
#Page that shows all the pizzas.
path('pizza/', pizzas.index, name='pizza')
]
应该是什么:
urlpatterns = [
#Home page
path('', views.index, name='index'), # comma added here
#Page that shows all the pizzas.
path('pizza/', views.pazzas, name='pizza') # changed pizzas.index to views.pazzas
]