当前位置: 首页 > news >正文

唐山网站建设拓seo设置是什么

唐山网站建设拓,seo设置是什么,一天赚五千块钱的捕鱼游戏,南通自助模板建站目录 一、创建django项目 二、修改默认配置 三、配置数据库连接 四、创建表结构 五、在app当中创建静态文件 六、页面实战-部门管理 1、实现一个部门列表页面 2、实现新增部门页面 3、实现删除部门 4、实现部门编辑功能 七、模版的继承 1、创建模板layout.html 1将公共的部分写进模版 2后续新的html页面使用下面方法继承模版 2、将depart_list.html页面使用模版重构 3、将depart_add.html页面重构 4、将depart_edit.html页面重构 八、页面实战-用户管理 1、uri注册 2、views.py 3、用户列表页面 4、添加用户user_add.html--- 老方法 5、添加用户user_model_form_add.html--- 新方法ModelForm 6、解决提示英文问题 7、编辑用户 -新增user_edit.html页面 8、编辑用户 -修改views.py 9、修改数据库入职时间为年月日格式 10、删除用户在views.py新增user_delete方法 一、创建django项目 使用pycharm创建django项目 二、修改默认配置 1、删除settings配置 删除下图[]内容 2、删除templates文件夹 三、创建app应用与注册应用 1、创建app # XXX项目名 python manage.py startapp xxx 2、注册app 修改settings如下图红色方框是创建的app名 三、配置数据库连接 1、安装pymysql pip install pymysql2、配置在项目同名包下的_init_.py里面添加 import pymysql pymysql.install_as_MySQLdb() 3、修改settings.py ,注释db.sqlite3的配置新增下图 # DATABASES { # default: { # ENGINE: django.db.backends.sqlite3, # NAME: BASE_DIR / db.sqlite3, # } # }DATABASES {default: {ENGINE: django.db.backends.mysql, # 数据库的类型NAME: texx, # 所使用的的数据库的名字USER: root, # 数据库服务器的用户PASSWORD: xxxx, # 密码HOST: 127.0.0.1, # 主机PORT: 3306, # 端口} } 四、创建表结构 1、在models.py创建类 from django.db import models# Create your models here.class Department(models.Model):部门表name models.CharField(verbose_name部门名称, max_length20)class UserInfo(models.Model):员工表name models.CharField(verbose_name姓名, max_length20)password models.CharField(verbose_name密码, max_length64)age models.IntegerField(verbose_name年龄)gender_choices ((1, 男), (2, 女))gender models.SmallIntegerField(verbose_name性别,choicesgender_choices)account models.DecimalField(verbose_name账户余额, max_digits10, decimal_places2,default0)create_time models.DateTimeField(verbose_name入职时间)# depart会自动生成字段为depart_id# 级联删除 on_deletemodels.CASCADE# 置空 on_deletemodels.SET_NULL 但是必须和nullTrue, blankTrue配合使用因为你得支持为nulldepart models.ForeignKey(toDepartment, to_fieldid, on_deletemodels.CASCADE)2、创建一个mysql数据库略 3、django命令生成库表 python manage.py makemigrations python manage.py migrate 另一个方法按下图操作之后就可省略上图 python manage.py 命令直接输入后面的即可 五、在app当中创建静态文件 1、创建下图目录 2、将下载的bootstrap-3.4.1复制到plugins 3、将下载的jquery-3.6.3.min.js复制到js 4、在app应用下创建templates文件夹 六、页面实战-部门管理 1、实现一个部门列表页面 1设置部门列表路由 from django.contrib import admin from django.urls import path from TestManagementSystem import viewsurlpatterns [# path(admin/, admin.site.urls),path(depart/list/, views.depart_list), ]2创建部门列表views.py视图 from django.shortcuts import render from TestManagementSystem import models # Create your views here.def depart_list(request):部门列表# 查询所有部门depart_set models.Department.objects.all()print(depart_set)return render(request, depart_list.html, {depart_set: depart_set})3创建部门列表html页面 在templates下创建depart_list.html 先引入样式、js等 {% load static %} !DOCTYPE html html langen headmeta charsetUTF-8title部门列表/titlelink relstylesheet href{% static plugins/bootstrap-3.4.1/css/bootstrap.min.css %} /head bodyscript src{% static js/jquery-3.6.3.min.js%}/scriptscript src{% static plugins/bootstrap-3.4.1/js/bootstrap.js%}/script /body /html 加入导航 {% load static %} !DOCTYPE html html langen headmeta charsetUTF-8title部门列表/titlelink relstylesheet href{% static plugins/bootstrap-3.4.1/css/bootstrap.min.css %}//head bodynav classnavbar navbar-defaultdiv classcontainer-fluiddiv classnavbar-headerbutton typebutton classnavbar-toggle collapsed data-togglecollapse data-target#bs-example-navbar-collapse-1 aria-expandedfalsespan classsr-onlyToggle navigation/spanspan classicon-bar/spanspan classicon-bar/spanspan classicon-bar/span/buttona classnavbar-brand href#测试管理系统/a/divdiv classcollapse navbar-collapse idbs-example-navbar-collapse-1ul classnav navbar-navlia href/depart/list/部门管理/a/lilia href#Link/a/li/ulul classnav navbar-nav navbar-rightlia href#登录/a/lili classdropdowna href# classdropdown-toggle data-toggledropdown rolebutton aria-haspopuptrue aria-expandedfalse春天的菠菜 span classcaret/span/aul classdropdown-menulia href#个人资料/a/lilia href#我的信息/a/lili roleseparator classdivider/lilia href#注销/a/li/ul/li/ul/div/div /navscript src{% static js/jquery-3.6.3.min.js%}/scriptscript src{% static plugins/bootstrap-3.4.1/js/bootstrap.js%}/script /body /html 完成动态数据 {% load static %} !DOCTYPE html html langen headmeta charsetUTF-8title部门列表/titlelink relstylesheet href{% static plugins/bootstrap-3.4.1/css/bootstrap.min.css %}//head bodynav classnavbar navbar-defaultdiv classcontainer !-- div classcontainer-fluid --div classnavbar-headerbutton typebutton classnavbar-toggle collapsed data-togglecollapsedata-target#bs-example-navbar-collapse-1 aria-expandedfalsespan classsr-onlyToggle navigation/spanspan classicon-bar/spanspan classicon-bar/spanspan classicon-bar/span/buttona classnavbar-brand href#测试管理系统/a/divdiv classcollapse navbar-collapse idbs-example-navbar-collapse-1ul classnav navbar-navlia href/depart/list/部门管理/a/lilia href#Link/a/li/ulul classnav navbar-nav navbar-rightlia href#登录/a/lili classdropdowna href# classdropdown-toggle data-toggledropdown rolebutton aria-haspopuptruearia-expandedfalse春天的菠菜 span classcaret/span/aul classdropdown-menulia href#个人资料/a/lilia href#我的信息/a/lili roleseparator classdivider/lilia href#注销/a/li/ul/li/ul/div/div /navdivdiv classcontainerdiv stylemargin-bottom: 10pxa classbtn btn-success href#span classglyphicon glyphicon-plus-sign aria-hiddentrue/span新建/a/divdiv classbs-example data-example-idpanel-without-body-with-tablediv classpanel panel-default!-- Default panel contents --div classpanel-headingspan classglyphicon glyphicon-th-list aria-hiddentrue/span部门列表/div!-- Table --table classtable table-borderedtheadtrth序号/thth名称/thth操作/th/tr/theadtbody{% for obj in depart_set %}trth scoperow{{ obj.id }}/thtd{{ obj.name }}/tdtda classbtn btn-primary btn-xs编辑/aa classbtn btn-danger btn-xs删除/a/td/tr{% endfor %}/tbody/table/div/div/div /divscript src{% static js/jquery-3.6.3.min.js %}/script script src{% static plugins/bootstrap-3.4.1/js/bootstrap.js %}/script /body /html 数据从数据库里做几个后续新增就可以实现页面新增 2、实现新增部门页面 url注册 DjangoDemoOne URL ConfigurationThe urlpatterns list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/3.2/topics/http/urls/ Examples: Function views1. Add an import: from my_app import views2. Add a URL to urlpatterns: path(, views.home, namehome) Class-based views1. Add an import: from other_app.views import Home2. Add a URL to urlpatterns: path(, Home.as_view(), namehome) Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns: path(blog/, include(blog.urls))from django.contrib import admin from django.urls import path from TestManagementSystem import viewsurlpatterns [# path(admin/, admin.site.urls),path(depart/list/, views.depart_list),path(depart/add/, views.depart_add), ]新增depart_add.html页面 {% load static %} !DOCTYPE html html langen headmeta charsetUTF-8title部门列表/titlelink relstylesheet href{% static plugins/bootstrap-3.4.1/css/bootstrap.min.css %}//head bodynav classnavbar navbar-defaultdiv classcontainer !-- div classcontainer-fluid --div classnavbar-headerbutton typebutton classnavbar-toggle collapsed data-togglecollapsedata-target#bs-example-navbar-collapse-1 aria-expandedfalsespan classsr-onlyToggle navigation/spanspan classicon-bar/spanspan classicon-bar/spanspan classicon-bar/span/buttona classnavbar-brand href#测试管理系统/a/divdiv classcollapse navbar-collapse idbs-example-navbar-collapse-1ul classnav navbar-navlia href/depart/list/部门管理/a/lilia href#Link/a/li/ulul classnav navbar-nav navbar-rightlia href#登录/a/lili classdropdowna href# classdropdown-toggle data-toggledropdown rolebutton aria-haspopuptruearia-expandedfalse春天的菠菜 span classcaret/span/aul classdropdown-menulia href#个人资料/a/lilia href#我的信息/a/lili roleseparator classdivider/lilia href#注销/a/li/ul/li/ul/div/div /navdivdiv classcontainerdiv stylemargin-bottom: 10pxa classbtn btn-success href/depart/add/span classglyphicon glyphicon-plus-sign aria-hiddentrue/span新建/a/divdiv classbs-example data-example-idpanel-without-body-with-tablediv classpanel panel-default!-- Default panel contents --div classpanel-headingspan classglyphicon glyphicon-th-list aria-hiddentrue/span部门列表/div!-- Table --table classtable table-borderedtheadtrth序号/thth名称/thth操作/th/tr/theadtbody{% for obj in depart_set %}trth scoperow{{ obj.id }}/thtd{{ obj.name }}/tdtda classbtn btn-primary btn-xs编辑/aa classbtn btn-danger btn-xs删除/a/td/tr{% endfor %}/tbody/table/div/div/div /divscript src{% static js/jquery-3.6.3.min.js %}/script script src{% static plugins/bootstrap-3.4.1/js/bootstrap.js %}/script /body /html depart_list新增链接到depart_add页面 {% load static %} !DOCTYPE html html langen headmeta charsetUTF-8title部门列表/titlelink relstylesheet href{% static plugins/bootstrap-3.4.1/css/bootstrap.min.css %}//head bodynav classnavbar navbar-defaultdiv classcontainer !-- div classcontainer-fluid --div classnavbar-headerbutton typebutton classnavbar-toggle collapsed data-togglecollapsedata-target#bs-example-navbar-collapse-1 aria-expandedfalsespan classsr-onlyToggle navigation/spanspan classicon-bar/spanspan classicon-bar/spanspan classicon-bar/span/buttona classnavbar-brand href#测试管理系统/a/divdiv classcollapse navbar-collapse idbs-example-navbar-collapse-1ul classnav navbar-navlia href/depart/list/部门管理/a/lilia href#Link/a/li/ulul classnav navbar-nav navbar-rightlia href#登录/a/lili classdropdowna href# classdropdown-toggle data-toggledropdown rolebutton aria-haspopuptruearia-expandedfalse春天的菠菜 span classcaret/span/aul classdropdown-menulia href#个人资料/a/lilia href#我的信息/a/lili roleseparator classdivider/lilia href#注销/a/li/ul/li/ul/div/div /navdivdiv classcontainerdiv stylemargin-bottom: 10pxa classbtn btn-success href/depart/add/span classglyphicon glyphicon-plus-sign aria-hiddentrue/span新建/a/divdiv classbs-example data-example-idpanel-without-body-with-tablediv classpanel panel-default!-- Default panel contents --div classpanel-headingspan classglyphicon glyphicon-th-list aria-hiddentrue/span部门列表/div!-- Table --table classtable table-borderedtheadtrth序号/thth名称/thth操作/th/tr/theadtbody{% for obj in depart_set %}trth scoperow{{ obj.id }}/thtd{{ obj.name }}/tdtda classbtn btn-primary btn-xs编辑/aa classbtn btn-danger btn-xs删除/a/td/tr{% endfor %}/tbody/table/div/div/div /divscript src{% static js/jquery-3.6.3.min.js %}/script script src{% static plugins/bootstrap-3.4.1/js/bootstrap.js %}/script /body /html views新增depart_add方法 from django.shortcuts import render, redirect, HttpResponse from TestManagementSystem import models # Create your views here.def depart_list(request):部门列表# 查询所有部门depart_set models.Department.objects.all()return render(request, depart_list.html, {depart_set: depart_set})def depart_add(request):新增部门# 新增部门 # return HttpResponse(成功)if request.method GET:return render(request, depart_add.html)depart_name request.POST.get(departname)models.Department.objects.create(namedepart_name)return redirect(/depart/list)3、实现删除部门 url注册 DjangoDemoOne URL ConfigurationThe urlpatterns list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/3.2/topics/http/urls/ Examples: Function views1. Add an import: from my_app import views2. Add a URL to urlpatterns: path(, views.home, namehome) Class-based views1. Add an import: from other_app.views import Home2. Add a URL to urlpatterns: path(, Home.as_view(), namehome) Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns: path(blog/, include(blog.urls))from django.contrib import admin from django.urls import path from TestManagementSystem import viewsurlpatterns [# path(admin/, admin.site.urls),path(depart/list/, views.depart_list),path(depart/add/, views.depart_add),path(depart/delete/, views.depart_delete), ]修改depart_list页面的修改删除按钮业务 {% load static %} !DOCTYPE html html langen headmeta charsetUTF-8title部门列表/titlelink relstylesheet href{% static plugins/bootstrap-3.4.1/css/bootstrap.min.css %}//head bodynav classnavbar navbar-defaultdiv classcontainer !-- div classcontainer-fluid --div classnavbar-headerbutton typebutton classnavbar-toggle collapsed data-togglecollapsedata-target#bs-example-navbar-collapse-1 aria-expandedfalsespan classsr-onlyToggle navigation/spanspan classicon-bar/spanspan classicon-bar/spanspan classicon-bar/span/buttona classnavbar-brand href#测试管理系统/a/divdiv classcollapse navbar-collapse idbs-example-navbar-collapse-1ul classnav navbar-navlia href/depart/list/部门管理/a/lilia href#Link/a/li/ulul classnav navbar-nav navbar-rightlia href#登录/a/lili classdropdowna href# classdropdown-toggle data-toggledropdown rolebutton aria-haspopuptruearia-expandedfalse春天的菠菜 span classcaret/span/aul classdropdown-menulia href#个人资料/a/lilia href#我的信息/a/lili roleseparator classdivider/lilia href#注销/a/li/ul/li/ul/div/div /navdivdiv classcontainerdiv stylemargin-bottom: 10pxa classbtn btn-success href/depart/add/span classglyphicon glyphicon-plus-sign aria-hiddentrue/span新建/a/divdiv classbs-example data-example-idpanel-without-body-with-tablediv classpanel panel-default!-- Default panel contents --div classpanel-headingspan classglyphicon glyphicon-th-list aria-hiddentrue/span部门列表/div!-- Table --table classtable table-borderedtheadtrth序号/thth名称/thth操作/th/tr/theadtbody{% for obj in depart_set %}trth scoperow{{ obj.id }}/thtd{{ obj.name }}/tdtda classbtn btn-primary btn-xs编辑/aa classbtn btn-danger btn-xs href/depart/delete/?departid{{ obj.id }}删除/a/td/tr{% endfor %}/tbody/table/div/div/div /divscript src{% static js/jquery-3.6.3.min.js %}/script script src{% static plugins/bootstrap-3.4.1/js/bootstrap.js %}/script /body /html 修改views.py新增depart_delete方法 from django.shortcuts import render, redirect, HttpResponse from TestManagementSystem import models # Create your views here.def depart_list(request):部门列表# 查询所有部门depart_set models.Department.objects.all()return render(request, depart_list.html, {depart_set: depart_set})def depart_add(request):新增部门# 新增部门# return HttpResponse(成功)if request.method GET:return render(request, depart_add.html)depart_name request.POST.get(departname)models.Department.objects.create(namedepart_name)return redirect(/depart/list)def depart_delete(request):删除部门depart_id request.GET.get(departid)models.Department.objects.filter(iddepart_id).delete()return redirect(/depart/list) 4、实现部门编辑功能 url注册 DjangoDemoOne URL ConfigurationThe urlpatterns list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/3.2/topics/http/urls/ Examples: Function views1. Add an import: from my_app import views2. Add a URL to urlpatterns: path(, views.home, namehome) Class-based views1. Add an import: from other_app.views import Home2. Add a URL to urlpatterns: path(, Home.as_view(), namehome) Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns: path(blog/, include(blog.urls))from django.contrib import admin from django.urls import path from TestManagementSystem import viewsurlpatterns [# path(admin/, admin.site.urls),path(depart/list/, views.depart_list),path(depart/add/, views.depart_add),path(depart/delete/, views.depart_delete),path(depart/int:nid/edit/, views.depart_edit), ]修改depart_list编辑页面 {% load static %} !DOCTYPE html html langen headmeta charsetUTF-8title部门列表/titlelink relstylesheet href{% static plugins/bootstrap-3.4.1/css/bootstrap.min.css %}//head bodynav classnavbar navbar-defaultdiv classcontainer !-- div classcontainer-fluid --div classnavbar-headerbutton typebutton classnavbar-toggle collapsed data-togglecollapsedata-target#bs-example-navbar-collapse-1 aria-expandedfalsespan classsr-onlyToggle navigation/spanspan classicon-bar/spanspan classicon-bar/spanspan classicon-bar/span/buttona classnavbar-brand href#测试管理系统/a/divdiv classcollapse navbar-collapse idbs-example-navbar-collapse-1ul classnav navbar-navlia href/depart/list/部门管理/a/lilia href#Link/a/li/ulul classnav navbar-nav navbar-rightlia href#登录/a/lili classdropdowna href# classdropdown-toggle data-toggledropdown rolebutton aria-haspopuptruearia-expandedfalse春天的菠菜 span classcaret/span/aul classdropdown-menulia href#个人资料/a/lilia href#我的信息/a/lili roleseparator classdivider/lilia href#注销/a/li/ul/li/ul/div/div /navdivdiv classcontainerdiv stylemargin-bottom: 10pxa classbtn btn-success href/depart/add/span classglyphicon glyphicon-plus-sign aria-hiddentrue/span新建/a/divdiv classbs-example data-example-idpanel-without-body-with-tablediv classpanel panel-default!-- Default panel contents --div classpanel-headingspan classglyphicon glyphicon-th-list aria-hiddentrue/span部门列表/div!-- Table --table classtable table-borderedtheadtrth序号/thth名称/thth操作/th/tr/theadtbody{% for obj in depart_set %}trth scoperow{{ obj.id }}/thtd{{ obj.name }}/tdtda classbtn btn-primary btn-xs href/depart/{{ obj.id }}/edit/编辑/aa classbtn btn-danger btn-xs href/depart/delete/?departid{{ obj.id }}删除/a/td/tr{% endfor %}/tbody/table/div/div/div /divscript src{% static js/jquery-3.6.3.min.js %}/script script src{% static plugins/bootstrap-3.4.1/js/bootstrap.js %}/script /body /html views.py新增depart_edit方法 from django.shortcuts import render, redirect, HttpResponse from TestManagementSystem import models # Create your views here.def depart_list(request):部门列表# 查询所有部门depart_set models.Department.objects.all()return render(request, depart_list.html, {depart_set: depart_set})def depart_add(request):新增部门# 新增部门# return HttpResponse(成功)if request.method GET:return render(request, depart_add.html)depart_name request.POST.get(departname)models.Department.objects.create(namedepart_name)return redirect(/depart/list)def depart_delete(request):删除部门depart_id request.GET.get(departid)models.Department.objects.filter(iddepart_id).delete()return redirect(/depart/list)def depart_edit(request, nid):编辑部门if request.method GET:row_object models.Department.objects.filter(idnid).first()# print(row_object.id, row_object.name)return render(request, depart_edit.html, {row_object: row_object})# 获取用户提交的部门名称edit_depart_name request.POST.get(departname)# 根据编辑页面用户ID去更新部门的名称models.Department.objects.filter(idnid).update(nameedit_depart_name)return redirect(/depart/list) 新增depart_edit.html页面 {% load static %} !DOCTYPE html html langen headmeta charsetUTF-8title新增部门/titlelink relstylesheet href{% static plugins/bootstrap-3.4.1/css/bootstrap.min.css %}//head bodynav classnavbar navbar-defaultdiv classcontainer !-- div classcontainer-fluid --div classnavbar-headerbutton typebutton classnavbar-toggle collapsed data-togglecollapsedata-target#bs-example-navbar-collapse-1 aria-expandedfalsespan classsr-onlyToggle navigation/spanspan classicon-bar/spanspan classicon-bar/spanspan classicon-bar/span/buttona classnavbar-brand href#测试管理系统/a/divdiv classcollapse navbar-collapse idbs-example-navbar-collapse-1ul classnav navbar-navlia href/depart/list/部门管理/a/lilia href#Link/a/li/ulul classnav navbar-nav navbar-rightlia href#登录/a/lili classdropdowna href# classdropdown-toggle data-toggledropdown rolebutton aria-haspopuptruearia-expandedfalse春天的菠菜 span classcaret/span/aul classdropdown-menulia href#个人资料/a/lilia href#我的信息/a/lili roleseparator classdivider/lilia href#注销/a/li/ul/li/ul/div/div /navdivdiv classcontainerdiv classpanel panel-defaultdiv classpanel-headingh3 classpanel-title新增部门/h3/divdiv classpanel-bodyform methodpost{% csrf_token %}div classform-grouplabel部门名称/labelinput typetext classform-control placeholder部门名称 namedepartname/divbutton typesubmit classbtn btn-primary保 存/button/form/div/div/div /div/body /html 修改后的值 七、模版的继承 #模版块 {% block content %}{% endblock %} 1、创建模板layout.html 1将公共的部分写进模版 {% load static %} !DOCTYPE html html langen headmeta charsetUTF-8{% block title %}{% endblock %}link relstylesheet href{% static plugins/bootstrap-3.4.1/css/bootstrap.min.css %}/style.navbar{border-radius: 0;}/style /head bodynav classnavbar navbar-defaultdiv classcontainer !-- div classcontainer-fluid --div classnavbar-headerbutton typebutton classnavbar-toggle collapsed data-togglecollapsedata-target#bs-example-navbar-collapse-1 aria-expandedfalsespan classsr-onlyToggle navigation/spanspan classicon-bar/spanspan classicon-bar/spanspan classicon-bar/span/buttona classnavbar-brand href#测试管理系统/a/divdiv classcollapse navbar-collapse idbs-example-navbar-collapse-1ul classnav navbar-navlia href/depart/list/部门管理/a/lilia href#Link/a/li/ulul classnav navbar-nav navbar-rightlia href#登录/a/lili classdropdowna href# classdropdown-toggle data-toggledropdown rolebutton aria-haspopuptruearia-expandedfalse春天的菠菜 span classcaret/span/aul classdropdown-menulia href#个人资料/a/lilia href#我的信息/a/lili roleseparator classdivider/lilia href#注销/a/li/ul/li/ul/div/div /navdiv{% block content %}{% endblock %}/divscript src{% static js/jquery-3.6.3.min.js %}/script script src{% static plugins/bootstrap-3.4.1/js/bootstrap.js %}/script /body /html 2后续新的html页面使用下面方法继承模版 {% extends layout.html %} {% block title %}{% endblock %} {% block content %}{% endblock %} 2、将depart_list.html页面使用模版重构 {% extends layout.html %} {% block title %}title部门列表/title {% endblock %} {% block content %}div classcontainerdiv stylemargin-bottom: 10pxa classbtn btn-success href/depart/add/span classglyphicon glyphicon-plus-sign aria-hiddentrue/span新建/a/divdiv classbs-example data-example-idpanel-without-body-with-tablediv classpanel panel-default!-- Default panel contents --div classpanel-headingspan classglyphicon glyphicon-th-list aria-hiddentrue/span部门列表/div!-- Table --table classtable table-borderedtheadtrth序号/thth名称/thth操作/th/tr/theadtbody{% for obj in depart_set %}trth scoperow{{ obj.id }}/thtd{{ obj.name }}/tdtda classbtn btn-primary btn-xs href/depart/{{ obj.id }}/edit/编辑/aa classbtn btn-danger btn-xs href/depart/delete/?departid{{ obj.id }}删除/a/td/tr{% endfor %}/tbody/table/div/div/div{% endblock %} 3、将depart_add.html页面重构 {% extends layout.html %} {% block title %}title新增部门/title {% endblock %} {% block content %}div classcontainerdiv classpanel panel-defaultdiv classpanel-headingh3 classpanel-title新增部门/h3/divdiv classpanel-bodyform methodpost{% csrf_token %}div classform-grouplabel部门名称/labelinput typetext classform-control placeholder部门名称 namedepartname/divbutton typesubmit classbtn btn-primary保 存/button/form/div/div/div{% endblock %}4、将depart_edit.html页面重构 {% extends layout.html %} {% block title %}title编辑部门/title {% endblock %} {% block content %}div classcontainerdiv classpanel panel-defaultdiv classpanel-headingh3 classpanel-title编辑部门/h3/divdiv classpanel-bodyform methodpost{% csrf_token %}div classform-grouplabel部门名称/labelinput typetext classform-control placeholder部门名称 namedepartname value{{ row_object.name }}/divbutton typesubmit classbtn btn-primary保 存/button/form/div/div/div {% endblock %} 八、页面实战-用户管理 1、uri注册 因为和部门管理类似 from django.contrib import admin from django.urls import path from TestManagementSystem import viewsurlpatterns [# path(admin/, admin.site.urls),# 部门管理path(depart/list/, views.depart_list),path(depart/add/, views.depart_add),path(depart/delete/, views.depart_delete),path(depart/int:nid/edit/, views.depart_edit),# 用户管理path(user/list/, views.user_list),path(user/add/, views.user_add),path(user/model/form/add/, views.user_model_form_add), # 新方法实现path(user/int:nid/edit/, views.user_edit),path(user/int:nid/delete/, views.user_delete) # 与部门删除方式不一样 ]2、views.py 新增类 class UserModelForm(forms.ModelForm) 与def user_model_form_add(request)方法 from django.shortcuts import render, redirect, HttpResponse from TestManagementSystem import models from django import forms # Create your views here.def depart_list(request):部门列表# 查询所有部门print(部门列表)depart_set models.Department.objects.all()return render(request, depart_list.html, {depart_set: depart_set})def depart_add(request):新增部门# 新增部门# return HttpResponse(成功)if request.method GET:return render(request, depart_add.html)depart_name request.POST.get(departname)models.Department.objects.create(namedepart_name)return redirect(/depart/list)def depart_delete(request):删除部门depart_id request.GET.get(departid)models.Department.objects.filter(iddepart_id).delete()return redirect(/depart/list)def depart_edit(request, nid):编辑部门if request.method GET:row_object models.Department.objects.filter(idnid).first()# print(row_object.id, row_object.name)return render(request, depart_edit.html, {row_object: row_object})# 获取用户提交的部门名称edit_depart_name request.POST.get(departname)# 根据编辑页面用户ID去更新部门的名称models.Department.objects.filter(idnid).update(nameedit_depart_name)return redirect(/depart/list)def user_list(request):用户列表# 查询所有用户user_set models.UserInfo.objects.all()for obj in user_set:print(obj.id, obj.name, obj.password, obj.account, obj.create_time.strftime(%Y-%m-%d-%H-%M-%S),obj.get_gender_display(), obj.depart.name)return render(request, user_list.html, {user_set: user_set})def user_add(request):新增用户原始方式if request.method GET:# 这个是为了新增页面动态获取性别context {gender_choices: models.UserInfo.gender_choices,depart_list: models.Department.objects.all()}return render(request, user_add.html, context)user_name request.POST.get(username)password request.POST.get(pwd)age request.POST.get(age)account request.POST.get(ac)create_time request.POST.get(ctime)gender request.POST.get(gd)depart_id request.POST.get(dp)models.UserInfo.objects.create(nameuser_name, passwordpassword,ageage, accountaccount,create_timecreate_time,gendergender, depart_iddepart_id)return redirect(/user/list)class UserModelForm(forms.ModelForm):# 限制姓名的长度至少为3位name forms.CharField(min_length3, label用户名)# password forms.CharField(label密码,validators这里写正则表达式)class Meta:model models.UserInfofields [name, password, age, account, create_time, gender, depart]widgets {name: forms.TextInput(attrs{class: form-control}),password: forms.PasswordInput(attrs{class: form-control}),age: forms.TextInput(attrs{class: form-control}),account: forms.TextInput(attrs{class: form-control}) } # 下方方法更好def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)# 循环找到所有插件添加了class: from-controlfor name, field in self.fields.items():field.widget.attrs {class: form-control, placeholder: field.label}def user_model_form_add(request):新增用户ModelForm方式if request.method GET:form UserModelForm()return render(request, user_model_form_add.html, {form: form})# POST 请求提交的数据数据校验form UserModelForm(datarequest.POST)if form.is_valid():# 如果数据合法这里判断的是所有字段不能为空则存储到数据库# models.UserInfo.objects.create(..) 常规存储方式form.save()return redirect(/user/list)# 如果不满足if判断进入到else返回错误信息return render(request, user_model_form_add.html, {form: form}) 3、用户列表页面 {% extends layout.html %} {% block title %}title用户列表/title {% endblock %} {% block content %}div classcontainerdiv stylemargin-bottom: 10pxa classbtn btn-success href/user/add/span classglyphicon glyphicon-plus-sign aria-hiddentrue/span新建/aa classbtn btn-success href/user/model/form/add/span classglyphicon glyphicon-plus-sign aria-hiddentrue/span新建(ModelForm方式)/a/divdiv classbs-example data-example-idpanel-without-body-with-tablediv classpanel panel-default!-- Default panel contents --div classpanel-headingspan classglyphicon glyphicon-th-list aria-hiddentrue/span用户列表/div!-- Table --table classtable table-borderedtheadtrth序号/thth姓名/thth密码/thth年龄/thth余额/thth入职时间/thth性别/thth所属部门/thth操作/th/tr/theadtbody{% for obj in user_set %}trth scoperow{{ obj.id }}/thtd{{ obj.name }}/tdtd{{ obj.password }}/tdtd{{ obj.age }}/tdtd{{ obj.account }}/tdtd{{ obj.create_time|date:Y-m-d H:i:s }}/tdtd{{ obj.get_gender_display }}/tdtd{{ obj.depart.name }}/tdtda classbtn btn-primary btn-xs href/user/{{ obj.id }}/edit/编辑/aa classbtn btn-danger btn-xs href/user/{{ obj.id }}/delete/删除/a/td/tr{% endfor %}/tbody/table/div/div/div{% endblock %} 4、添加用户user_add.html--- 老方法 {% extends layout.html %} {% block title %}title新增用户/title {% endblock %} {% block content %}div classcontainerdiv classpanel panel-defaultdiv classpanel-headingh3 classpanel-title新增用户/h3/divdiv classpanel-bodyform methodpost{% csrf_token %}div classform-grouplabel姓名/labelinput typetext classform-control placeholder姓名 nameusername/divdiv classform-grouplabel密码/labelinput typetext classform-control placeholder密码 namepwd/divdiv classform-grouplabel年龄/labelinput typetext classform-control placeholder年龄 nameage/divdiv classform-grouplabel余额/labelinput typetext classform-control placeholder余额 nameac/divdiv classform-grouplabel入职时间/labelinput typetext classform-control placeholder入职时间 namectime/divdiv classform-grouplabel性别/labelselect classform-control namegd{% for item in gender_choices %}option value{{ item.0 }}{{ item.1 }}/option{% endfor %}!--option value1男/optionoption value2女/option --/select/divdiv classform-grouplabel所属部门/labelselect classform-control namedp{% for item in depart_list %}option value{{ item.id }}{{ item.name }}/option{% endfor %}/select/divbutton typesubmit classbtn btn-primary保 存/button/form/div/div/div{% endblock %} 5、添加用户user_model_form_add.html--- 新方法ModelForm 修改model.py {% extends layout.html %} {% block title %}title新增用户(ModelForm)/title {% endblock %} {% block content %}div classcontainerdiv classpanel panel-defaultdiv classpanel-headingh3 classpanel-title新增用户/h3/divdiv classpanel-bodyform methodpost novalidate{% csrf_token %}{% for field in form %}div classform-grouplabel{{ field.label }}/label{{ field }}span stylecolor: red{{ field.errors.0 }}/span/div{% endfor %}button typesubmit classbtn btn-primary保 存/button/form/div/div/div{% endblock %}6、解决提示英文问题 修改settings.py 7、编辑用户 -新增user_edit.html页面 新增user_edit.html页面url前面全部配置好了 {% extends layout.html %} {% block title %}title编辑用户/title {% endblock %} {% block content %}div classcontainerdiv classpanel panel-defaultdiv classpanel-headingh3 classpanel-title编辑用户/h3/divdiv classpanel-bodyform methodpost novalidate{% csrf_token %}{% for field in form %}div classform-grouplabel{{ field.label }}/label{{ field }}span stylecolor: red{{ field.errors.0 }}/span/div{% endfor %}button typesubmit classbtn btn-primary保 存/button/form/div/div/div {% endblock %} 8、编辑用户 -修改views.py from django.shortcuts import render, redirect, HttpResponse from TestManagementSystem import models from django import forms # Create your views here.def depart_list(request):部门列表# 查询所有部门print(部门列表)depart_set models.Department.objects.all()return render(request, depart_list.html, {depart_set: depart_set})def depart_add(request):新增部门# 新增部门# return HttpResponse(成功)if request.method GET:return render(request, depart_add.html)depart_name request.POST.get(departname)models.Department.objects.create(namedepart_name)return redirect(/depart/list)def depart_delete(request):删除部门depart_id request.GET.get(departid)models.Department.objects.filter(iddepart_id).delete()return redirect(/depart/list)def depart_edit(request, nid):编辑部门if request.method GET:row_object models.Department.objects.filter(idnid).first()# print(row_object.id, row_object.name)return render(request, depart_edit.html, {row_object: row_object})# 获取用户提交的部门名称edit_depart_name request.POST.get(departname)# 根据编辑页面用户ID去更新部门的名称models.Department.objects.filter(idnid).update(nameedit_depart_name)return redirect(/depart/list)def user_list(request):用户列表# 查询所有用户user_set models.UserInfo.objects.all()for obj in user_set:print(obj.id, obj.name, obj.password, obj.account, obj.create_time.strftime(%Y-%m-%d-%H-%M-%S),obj.get_gender_display(), obj.depart.name)return render(request, user_list.html, {user_set: user_set})def user_add(request):新增用户原始方式if request.method GET:# 这个是为了新增页面动态获取性别context {gender_choices: models.UserInfo.gender_choices,depart_list: models.Department.objects.all()}return render(request, user_add.html, context)user_name request.POST.get(username)password request.POST.get(pwd)age request.POST.get(age)account request.POST.get(ac)create_time request.POST.get(ctime)gender request.POST.get(gd)depart_id request.POST.get(dp)models.UserInfo.objects.create(nameuser_name, passwordpassword,ageage, accountaccount,create_timecreate_time,gendergender, depart_iddepart_id)return redirect(/user/list)class UserModelForm(forms.ModelForm):# 限制姓名的长度至少为3位name forms.CharField(min_length3, label用户名)# password forms.CharField(label密码,validators这里写正则表达式)class Meta:model models.UserInfofields [name, password, age, account, create_time, gender, depart]widgets {name: forms.TextInput(attrs{class: form-control}),password: forms.PasswordInput(attrs{class: form-control}),age: forms.TextInput(attrs{class: form-control}),account: forms.TextInput(attrs{class: form-control}) } # 下方方法更好def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)# 循环找到所有插件添加了class: from-controlfor name, field in self.fields.items():field.widget.attrs {class: form-control, placeholder: field.label}def user_model_form_add(request):新增用户ModelForm方式if request.method GET:form UserModelForm()return render(request, user_model_form_add.html, {form: form})# POST 请求提交的数据数据校验form UserModelForm(datarequest.POST)if form.is_valid():# 如果数据合法这里判断的是所有字段不能为空则存储到数据库# models.UserInfo.objects.create(..) 常规存储方式form.save()return redirect(/user/list)# 如果不满足if判断进入到else返回错误信息return render(request, user_model_form_add.html, {form: form})def user_edit(request, nid):编辑用户# 根据nid去数据库获取所在行数据row_object models.UserInfo.objects.filter(idnid).first()if request.method GET: form UserModelForm(instancerow_object)return render(request, user_edit.html, {form: form})# POST 请求提交的数据数据校验 form UserModelForm(datarequest.POST, instancerow_object)if form.is_valid():# 如果数据合法这里判断的是所有字段不能为空则存储到数据库# models.UserInfo.objects.create(..) 常规存储方式# form.instance.字段名值 # 如果需要存储用户输入之外的值使用这个form.save()return redirect(/user/list)# 如果不满足if判断进入到else返回错误信息return render(request, user_edit.html, {form: form}) 9、修改数据库入职时间为年月日格式 执行命令 python manage.py makemigrations python manage.py migrate 修改user_list.html,删除红色方框 10、删除用户在views.py新增user_delete方法 from django.shortcuts import render, redirect, HttpResponse from TestManagementSystem import models from django import forms # Create your views here.def depart_list(request):部门列表# 查询所有部门print(部门列表)depart_set models.Department.objects.all()return render(request, depart_list.html, {depart_set: depart_set})def depart_add(request):新增部门# 新增部门# return HttpResponse(成功)if request.method GET:return render(request, depart_add.html)depart_name request.POST.get(departname)models.Department.objects.create(namedepart_name)return redirect(/depart/list)def depart_delete(request):删除部门depart_id request.GET.get(departid)models.Department.objects.filter(iddepart_id).delete()return redirect(/depart/list)def depart_edit(request, nid):编辑部门if request.method GET:row_object models.Department.objects.filter(idnid).first()# print(row_object.id, row_object.name)return render(request, depart_edit.html, {row_object: row_object})# 获取用户提交的部门名称edit_depart_name request.POST.get(departname)# 根据编辑页面用户ID去更新部门的名称models.Department.objects.filter(idnid).update(nameedit_depart_name)return redirect(/depart/list)def user_list(request):用户列表# 查询所有用户user_set models.UserInfo.objects.all()for obj in user_set:print(obj.id, obj.name, obj.password, obj.account, obj.create_time.strftime(%Y-%m-%d-%H-%M-%S),obj.get_gender_display(), obj.depart.name)return render(request, user_list.html, {user_set: user_set})def user_add(request):新增用户原始方式if request.method GET:# 这个是为了新增页面动态获取性别context {gender_choices: models.UserInfo.gender_choices,depart_list: models.Department.objects.all()}return render(request, user_add.html, context)user_name request.POST.get(username)password request.POST.get(pwd)age request.POST.get(age)account request.POST.get(ac)create_time request.POST.get(ctime)gender request.POST.get(gd)depart_id request.POST.get(dp)models.UserInfo.objects.create(nameuser_name, passwordpassword,ageage, accountaccount,create_timecreate_time,gendergender, depart_iddepart_id)return redirect(/user/list)class UserModelForm(forms.ModelForm):# 限制姓名的长度至少为3位name forms.CharField(min_length3, label用户名)# password forms.CharField(label密码,validators这里写正则表达式)class Meta:model models.UserInfofields [name, password, age, account, create_time, gender, depart]widgets {name: forms.TextInput(attrs{class: form-control}),password: forms.PasswordInput(attrs{class: form-control}),age: forms.TextInput(attrs{class: form-control}),account: forms.TextInput(attrs{class: form-control}) } # 下方方法更好def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)# 循环找到所有插件添加了class: from-controlfor name, field in self.fields.items():field.widget.attrs {class: form-control, placeholder: field.label}def user_model_form_add(request):新增用户ModelForm方式if request.method GET:form UserModelForm()return render(request, user_model_form_add.html, {form: form})# POST 请求提交的数据数据校验form UserModelForm(datarequest.POST)if form.is_valid():# 如果数据合法这里判断的是所有字段不能为空则存储到数据库# models.UserInfo.objects.create(..) 常规存储方式form.save()return redirect(/user/list)# 如果不满足if判断进入到else返回错误信息return render(request, user_model_form_add.html, {form: form})def user_edit(request, nid):编辑用户# 根据nid去数据库获取所在行数据row_object models.UserInfo.objects.filter(idnid).first()if request.method GET:form UserModelForm(instancerow_object)return render(request, user_edit.html, {form: form})# POST 请求提交的数据数据校验form UserModelForm(datarequest.POST, instancerow_object)if form.is_valid():# 如果数据合法这里判断的是所有字段不能为空则存储到数据库# models.UserInfo.objects.create(..) 常规存储方式# form.instance.字段名值 # 如果需要存储用户输入之外的值使用这个form.save()return redirect(/user/list)# 如果不满足if判断进入到else返回错误信息return render(request, user_edit.html, {form: form})def user_delete(request, nid):删除用户# 根据nid去数据库获取所在行数据进行删除models.UserInfo.objects.filter(idnid).delete()return redirect(/user/list) 源码下载点我下载
http://www.hkea.cn/news/14541368/

相关文章:

  • 网站建设与管理作业手机网站开发企业
  • 网站怎么做架构网站如何做数据分析报告
  • 云南建设网官方网站h5企业网站定制排名
  • 单页网站上传教程网站建设中怎么解决
  • 营销网站科技微信推广广告在哪里做
  • 福州网络营销网站室内设计效果图手绘线稿
  • 网站开发开什么票源码网站怎么搭建
  • cms 网站模板网站域名骗子
  • 红制作官网长沙seo优化多少钱
  • 怎么建设游戏试玩平台网站江苏省住房和建设部网站
  • 上海远程教育网站设计与开发公司谷歌paypal下载
  • 萧山网站优化交换友链平台
  • 免费word文档模板下载网站it外包公司排行榜
  • 天津智能网站建设哪里有网站建设的新闻
  • 网站建设可行性的分析如何做漫画赚钱的网站
  • 图片预览网站 末班wordpress更新文件放在哪里
  • 深圳网站建设 制作元赶集网官网首页
  • 黄页名录网站开发wordpress后台左上角
  • 黑龙江建设网站打不开包装设计案例
  • 网站建设都包括哪几个方面wordpress怎么把分类弄成导航
  • wordpress如何上传文件大小岳阳关键词优化
  • 旅行网站排名前十名网域高科学校网站管理系统漏洞
  • 网站优化建设山东海南网站运营托管咨询
  • 郑州专业网站推广公司wordpress 修改文章作者
  • 婚纱摄影网站南昌网站设计企业
  • 江西城乡建设厅网站数码家电商城网站源码
  • 网站外链建设实例问卷调查网站赚钱
  • 中文网站开发软件关于单位网站建设的报告
  • 互联网保险的典型案例seo网站推广是什么
  • 浏阳企业网站建设微信链接的微网站怎么做