orning! 最近关注本公众号的人很多,小编我真有点小激动。上篇文章中没发小姐姐的福利图,立马就有人来问了。我不禁内心一凉。亲们,你们关注本公众号不会是为了福利图而来的吧?话不多说,小编我今天接着分享使用Django开发一个餐厅在线点评网站的第2部分教程。今天的任务是开发其余4个功能性页面(见标黄部分)。
-
查看餐厅(restaurants)列表 - 所有用户
-
查看餐厅详情(包括名称,地址,电话,菜品和点评) - 所有用户
-
创建餐厅 - 仅限登录用户
-
修改餐厅 - 仅限登录用户,且每个用户只能修改自己创建的餐厅
-
给餐厅添加菜品(dishes) - 仅限登录用户
-
修改菜品信息 - 每个登录用户只能修改自己创建的菜品
-
查看菜品详情(品名,描述, 图片和价格)
-
给餐厅添加评论(review)和评分(rating)
在阅读本文前,请务必先完成阅读Django实战教程: 开发餐厅在线点评网站(1)。福利图照送,喜欢的给个赞! :)
URLconf之urls.py
小编我使用Django开发网站或APP有个习惯,一般先写urls.py再编写视图views.py。我是这么思考的:
-
本文中有4个功能性页面,那么我需要设计4个urls,并编写4个视图处理方法与之对应。
-
根据功能性页面的需求,我可以更好地思考需要通过url给视图传递哪些参数。比如创建菜品时,我们还需要通过URL传递餐厅的id值(<pk>)。因为一个餐厅对应多个菜品。
from django.urls import path, re_path
from . import views
# namespace
app_name = 'myrestaurants'
urlpatterns = [
# 前4个功能性页面的URL见教程第一部分
# 创建菜品 ex.: /myrestaurants/restaurant/1/dishes/create/
re_path(r'^restaurant/(?P<pk>\d+)/dishes/create/$',
views.DishCreate.as_view(), name='dish_create'),
# 编辑菜品, ex.: /myrestaurants/restaurant/1/dishes/1/edit/
re_path(r'^restaurant/(?P<pkr>\d+)/dishes/(?P<pk>\d+)/edit/$',
views.DishEdit.as_view(), name='dish_edit'),
# 查看菜品信息 ex: /myrestaurants/restaurants/1/dishes/1/
re_path(r'^restaurant/(?P<pkr>\d+)/dishes/(?P<pk>\d+)/$',
views.DishDetail.as_view(), name='dish_detail'),
# 创建餐厅评论, /myrestaura