为上次要求开发的Pizzeria项目添加一个页面显示比萨名称,为这些名称设置链接,使之跳转到一个显示相应比萨配料的页面。
准备工作:
1.在learning_pizza项目中打开命令行界面
2.激活虚拟环境:lp_env\Scripts\activate
3.运行服务器:python manage.py runserver
4.打开网址:http://localhost:8000
【定义URL】
1.打开learning_pizza/urls,修改为
from django.contrib import admin
from django.urls import path
from django.conf.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
path(r'',include(('learning_pizzas.urls','learning_pizzas'),namespace='learning_pizzas')),
]
2.新建learning_pizzas/urls.py,内容为
from django.conf.urls import url
from . import views
urlpatterns=[
#主页
url(r'^$',views.index,name='index'),
#展示pizzas页面
url(r'^pizzas/$',views.pizzas,name='pizzas'),
#展示单个pizza的配料的详情页
url(r'^pizzas/(?P<pizza_id>\d+)/$',views.pizza,name='pizza'),
]
【编写视图】
1.打开learning_pizzas/views.py,修改为
from django.shortcuts import render
from .models import Pizza
#from .models import Topping
# Create your views here.
def index(request):
#显示主页
return render(request,'learning_pizzas/index.html')
def pizzas(request):
#显示展示所有pizzas页
pizzas= Pizza.objects.order_by('date_added')
context={'pizzas':pizzas}
return render(request,'learning_pizzas/pizzas.html',context)
def pizza(request,pizza_id):
#显示展示某一个pizza的配料的页面
pizza=Pizza.objects.get(id=pizza_id)
toppings=pizza.topping_set.order_by('date_added')
context={'pizza':pizza,'toppings':toppings}
return render(request,'learning_pizzas/pizza.html',context)
注:date_added前面加个-就会把最新的时间排在前面
注:虽然写着pizza_id,但实际上pizza.id才是id号,前者只是一个自己设置的变量。
【编写模板】
1.在learning_pizzas/templates/learning_pizzas/下新建base.html
里面准备放置每个页面都有的链接,内容设置为
<p>
<a href="{% url 'learning_pizzas:index' %}">Learning_pizzas</a> -
<a href="{% url 'learning_pizzas:pizzas' %}">Pizzas</a>
</p>
{%block content%}{%endblock content%}
2.在learning_pizzas/templates/learning_pizzas/下新建pizzas.html
内容为:
{% extends "learning_pizzas/base.html" %}
{% block content %}
<p>
这里是展示所有Pizzas的页面
</p>
<ul>
{%for pizza in pizzas%}
<li>
<a href="{%url 'learning_pizzas:pizza' pizza.id%}">{{pizza}}</a>
<a>完成于{{pizza.date_added}}</a>
</li>
{%empty%}
<li>
还没有添加Pizza
</li>
{%endfor%}
</ul>
{%endblock content%}
3.打开learning_pizzas/templates/learning_pizzas/下的index.html
修改为
{%extends "learning_pizzas/base.html"%}
{%block content%}
<p>这是pizza主页</p>
{%endblock content%}
4.在learning_pizzas/templates/learning_pizzas/下新建pizza.html
内容为
{%extends "learning_pizzas/base.html"%}
{%block content%}
<p>这里是展示你所选Pizza:{{pizza}}的配料的页面</p>
<ul>
{%for topping in toppings%}
<li>
<p>{{topping.date_added|date:'M d,Y H:i'}}</p>
<p>{{topping.name|linebreaks}}</p>
</li>
{%empty%}
<li>
还没有给这个Pizza添加配料,快去添加配料吧
</li>
{%endfor%}
</ul>
{%endblock content%}
最后,关于{{}}和{%%},引用别人的记录如下
模版的常用语法只需要记两种特殊符号:
{{ }}和 {% %}
变量相关的用{{}},逻辑相关的用{%%}。