Django,django samesite
学习笔记,仅供参考,有错必究
文章目录制作图书管理系统第一步第二步第三步
制作图书管理系统
我们基于上一个博客姜戈(第38部分)制作登录界面的我的网站_书店项目,制作一个图书管理系统。
第一步
向数据库中添加一些图书信息
首先我们先创建后台管理账号:
f:\我的工作室\ python工作室\山羊主教。project 01 \ Django \我的网站_书店python manage。py创建超级用户
用户名(留空以使用山羊主教’):
电子邮件地址:goatbishop@gmail.com
密码:
密码(再次):
该密码完全是数字。
绕过密码验证并创建用户吗?[是/否]:否
密码:
密码(再次):
超级用户创建成功。
我们打开书店应用下的管理. py并进行注册:
来自姜戈. contrib导入管理
从。导入模型
#在此注册您的模特。
班级图书_管理员(管理员ModelAdmin):
list_display=[title , pub_house , price , market_price]
list_filter=[pub_house]
search_fields=[title , pub_house]
list_editable=[market_price]
管理员。网站。注册(模型. Book,Book_Manager)
开启服务,进入管理数据库后台管理系统,随便添加几本书:
第二步
设置登录用户可以浏览、删除、修改和添加图书信息,但是未登录的用户,只能浏览图书信息,无权更改。
首先,我们在主模板文件夹下,修改主页homepage.html:
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题首页/标题
/头
身体
{# 判断是否有用户信息来确定是否已经登陆#}
{% if request.session.userinfo %}
欢迎:{ {请求。会话。用户信息。用户名} }
英国铁路公司
a href=/userinfo/logout/退出登录/a
巴西
差异
a href=/bookstore/add/添加新书/a
a href=/bookstore/list_all/查看全部图书/a
/div
{% else %}
保险商实验所
阿利href=/userinfo/login/登陆/a/李
阿利href=/userinfo/reg/注册/a/李
/ul
游客,您可以a href=/bookstore/list_all/查看全部图书/a
巴西
若您想对书籍信息进行修改,请先登录!
{% endif %}
/body
/html
如果我们在登录状态下,主页是这样的:
在未登录状态下,主页是这样的:
我们先在书店应用下的urls.py模块中添加路由:
从django.urls导入重新路径
从。导入视图
urlpatterns=[
re_path(r^$,views.homepage),
re_path(r^add/$,views.new_book),
re_path(r^list_all/$,views.list_books),
re_path(r^mod/(\w )/$ ,views.mod_book_info),
re_path(r^del/(\w )/$ ,views.del_book),
]再书店应用下的views.py模块中添加视图函数:
从django .捷径导入渲染
#在此创建您的观点。
从django.http导入HttpResponse
从。导入模型
从django.http导入Http404
定义主页(请求):
return render(请求,“index.html”)
def新_书(请求):
# 为添加新收功能提供权限验证
如果"用户信息"不在请求.会话中:
引发Http404
if request.method==GET :
返回渲染(请求, new_book.html )
elif request.method==POST :
标题=请求POST.get(title ,)
pub_house=请求POST.get(pub_house ,)
价格=请求POST.get(price ,)
市场价格=请求. POST.get(市场价格,)
# 用书籍。对象管理器的创造方法来创建新书
abook=模型10 .书。对象。创建(标题=标题
价格=价格,
市场价格=市场价格,
酒馆=酒馆
打印(添加新书,成功添加新书:,abook.title)
返回http response( a href=/book store/添加新书成功,点我跳转到书库/a’)
定义列表_书籍(请求):
书籍=模型Book.objects.all()
返回render(请求, book_list.html ,locals())
def mod_book_info(请求,图书名称):
# 先根据图书编号找到对应的一本书
尝试:
abook=模型Book.objects.get(title=图书名称)
除了:
返回HttpResponse(没有找到 book_name 的图书信息)
if request.method==GET :
返回render(请求, mod_price.html ,locals())
elif request.method==POST :
尝试:
m_price=请求POST.get(market_price , 0.0 )
abook.market_price=m_price
abook.save() #提交修改
html=修改成功div a href=/bookstore/list_all/回到书籍浏览界面/a /div
返回HttpResponse(html)
除了:
返回HttpResponse(修改失败)
从django.http导入HttpResponseRedirect #改入HttpResponseRedirect模块用于重定向全球资源定位器(统一资源定位器)
def del_book(请求,book_name):
尝试:
abook=模型Book.objects.get(title=图书名称)
abook.delete()
返回HttpResponseRedirect(/bookstore/list _ all/)
除了:
返回HttpResponse(没有找到 book_name 的图书信息,删除失败)
在主模板文件夹下创建各种模板。
index.html
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题书库/标题
/头
身体
保险商实验所
{% if request.session.userinfo %}
阿利href=/书店/add/添加新图书/a/李
阿利href=/bookstore/list_all/显示所有图书/a/李
{% else %}
阿利href=/bookstore/list_all/显示所有图书/a/李
{% endif %}
/ul
/body
/html mod_price.html
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题修改价格/标题
/头
身体
form action=/book store/mod/{ { abook。title } }/ method= post
差异书名:{{ abook.title }} /div
差异版社名:{{ abook.pub_house }} /div
差异定价:{{ abook.price }} /div
差异
零售价:input type= text name= market _ price value= { { abook。market _ price } } placeholder=零售价需要
/div
差异
输入类型=提交值=修改价格
/div
/表单
/body
/html新_书。超文本标记语言
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题添加新书/标题
/头
身体
form action=/book store/add/ method= post
差异
输入类型= text name= title placeholder=新书名所需值=书名
/div
差异
input type= text name= pub _ house placeholder=新版社名需要
/div
差异
输入类型= text name= price placeholder=定价需要
/div
差异
输入类型= text name= market _ price placeholder=零售价需要
/div
差异
输入类型=提交值=添加新书
/div
/表单
/body
/html book_list.html
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题图书列表/标题
/头
身体
a href=/bookstore/进入书库/a nbsp .
a href=/返回首页/a
桌子
tr
泰国(泰国)书名/th
泰国(泰国)出版社/th
泰国(泰国)定价/th
泰国(泰国)零售价/th
泰国(泰国)修改/th
泰国(泰国)删除/th
/tr
{ % for abook in books % }
tr
td {{ abook.title }} /td
td {{ abook.pub_house }} /td
td {{ abook.price }} /td
td {{ abook.market_price }} /td
{% if request.session.userinfo %}
TD a href=/book store/mod/{ { abook。title } } 修改/a /td
TD a href=/book store/del/{ { abook。title } } 删除/a /td
{% else %}
任务描述列span=2 您无权更改/td
{% endif %}
/tr
{% endfor %}
/表格
/body
/html
第三步
图书管理系统使用演示
我们开启服务,并向首页发起请求(非登录状态):
点击查看全部图书,进入所有图书列表:
点击进入书库:
点击显示所有图书,返回所有图书列表。
在登录状态下,向首页发起请求:
点击添加新书,并按照字段类型添加书籍:
添加成功后,自动跳转到如下页面,我们点击这个超链接,进入书库:
点击显示所有图书:
我们又一次进入到了图书列表,但这次由于我们处于登录状态,所以可以对书籍进行修改和删除:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。