Django,django samesite

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: