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

镇江网站营销推广wordpress 小说主题

镇江网站营销推广,wordpress 小说主题,做云图的网站,设计公司网站时什么是重要的前戏 上篇文章写了一个简单的登录页面#xff0c;那我们可不可以实现一个简单的登录功能呢#xff1f;如果登录成功#xff0c;给返回一个页面#xff0c;失败给出错误的提示呢#xff1f; 在之前学HTML的时候#xff0c;我们知道#xff0c;网页在往服务器提交数据的时…前戏 上篇文章写了一个简单的登录页面那我们可不可以实现一个简单的登录功能呢如果登录成功给返回一个页面失败给出错误的提示呢 在之前学HTML的时候我们知道网页在往服务器提交数据的时候都是在form表单里并且要满足下面的几个条件 1.form标签必须要有action和method属性如果是文件上传还要加上下面的一句 form actionwww.baidu.com enctypemultipart/form-data/form   2.所有获取用户的标签必须放在form表单中必须要有name属性 3.必须要有submit按钮 Django必学三件套 Django 基础必会三件套renderHttpResponseredirect from django.shortcuts import HttpResponse, render, redirect HttpResponse返回一个指定的字符串 render返回一个HTML文件 redirect跳转url如果是同一个网站可以省略域名如果想跳转到其他网站要写上全部的网址   知道了form表单提交数据的三个要素后我们修改一下login.html文件 !DOCTYPE html html langzh-CN headmeta http-equivcontent-Type charsetUTF-8meta http-equivx-ua-compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1titleTitle/titlelink relstylesheet href/static/bootstrap-3.3.7/css/bootstrap.csslink relstylesheet href/static/font-awesome-4.7.0/css/font-awesome.cssstylebody {background-color: #eeeeee;}.login-box {margin-top: 50px;}/style /head body div classcontainerdiv classrowdiv classcol-md-4 col-md-offset-4 login-boxform classform-horizontal action/login/ methodpostdiv classcol-sm-9h2 classtext-center请登录/h2/divdiv classform-groupdiv classcol-sm-9div classinput-group margin-bottom-smlabel foremail classhidden邮箱/labelspan classinput-group-addoni classfa fa-envelope-o fa-fw/i/spaninput classform-control typetext nameemail idemail placeholder您的邮箱地址/divspan classhelp-block/span/div/divdiv classform-groupdiv classcol-sm-9div classinput-grouplabel forpassword classhidden 密码/labelspan classinput-group-addoni classfa fa-key fa-fw/i/spaninput classform-control typepassword namepwd idpassword placeholder请输入密码/divspan classhelp-block/span/div/divdiv classform-groupdiv classcol-sm-9div classcheckboxlabelinput typecheckbox 记住我/label/div/div/divdiv classform-groupdiv classcol-sm-9button typesubmit idb1 classbtn btn-block btn-primary登录/buttonp stylecolor: red;text-align: center{{ error_msg}}/p/div/div/form/div/div /divscript src/static/jquery-3.3.1.js/script script$(#b1).click(function () {$(input:not([typecheckbox])).each(function () {// 判断值为不为空if ($(this).val().length 0) {// 展示错误提示var errMsgPrefix $(this).prev().prev().text();$(this).parent().next().text(errMsgPrefix 不能为空);$(this).parent().parent().parent().addClass(has-error);}});});// 给输入框绑定获取焦点的事件$(input:not([typecheckbox])).focus(function () {// 清空错误提示$(this).parent().next().text();// 移除父标签的has-error$(this).parent().parent().removeClass(has-error);}); /script /body /html View Code 注意action/login/要加/要不然下面的错误时路径会是这样的login/login 我们在去login函数里打印一下request.GET def login(request):print(request.GET)return render(request,login.html) 结果 [02/Jul/2019 20:46:35] GET /login/login?email%40163.compwd123 HTTP/1.1 200 3532 QueryDict: {email: [163.com], pwd: [123]} 可以看到我们在登录页面输入的邮箱和密码都以字典的方式传给了后台其中字典的key就是我们在html文件里对应标签的name属性如果没有name属性则为空   我们提交数据的时候通常都是以post方法来提交的get通常是用于获取数据的那我们把login.html文件里的method‘get’改为post在来试一下 form classform-horizontal actionlogin methodpost   上面的错误信息告诉了我们CSRF验证失败。请求中止。我们只需要把setting.py里的CSRF注释掉就可以了 django.middleware.csrf.CsrfViewMiddleware #注释掉这行 先去把login函数里的GET换成POST print(request.POST)然后就可以正常访问了 那我们登录之后能不能给浏览器返回一个“登录成功”的提示呢   index.html !DOCTYPE html html langzh-CN headmeta http-equivcontent-Type charsetUTF-8meta http-equivx-ua-compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1titleTitle/titlelink relstylesheet href/static/bootstrap-3.3.7/css/bootstrap.css /head bodydiv classcontainerdiv classrowdiv classcol-md-12div classpage-headerh1信息收集卡small共三步/small/h1/divdiv classprogressdiv classprogress-bar progress-bar-success roleprogressbar aria-valuenow60 aria-valuemin0aria-valuemax100 stylewidth: 33%;1/3/div/div!--面板--div classpanel panel-primarydiv classpanel-heading基本信息span classglyphicon glyphicon-pushpin pull-right/span/divdiv classpanel-body!--表单--form classform-horizontaldiv classform-grouplabel forinputEmail3 classcol-sm-2 control-label姓名/labeldiv classcol-sm-4input typetext classform-control idinputEmail3 placeholderEmail/div/divdiv classform-grouplabel forinputPassword3 classcol-sm-2 control-label手机号/labeldiv classcol-sm-4input typetext classform-control idinputPassword3 placeholderPassword/div/divdiv classform-grouplabel forinputPassword3 classcol-sm-2 control-label邮箱/labeldiv classcol-sm-4input typeemail classform-control idinputPassword placeholderPassword/div/divdiv classform-grouplabel forinputPassword3 classcol-sm-2 control-label密码/labeldiv classcol-sm-4input typepassword classform-control idinputPassword4 placeholderPassword/div/divdiv classform-grouplabel forinputPassword3 classcol-sm-2 control-label头像/labeldiv classcol-sm-4input typefile idinputPassword5 placeholderPasswordspan classhelp-block只支持jpg,pnggif格式/span/div/divhrdiv classform-grouplabel forinputPassword3 classcol-sm-2 control-label属性/labeldiv classcol-sm-10div classradiolabelinput typeradio nameoptionsRadios idoptionsRadios1 valueoption1checkedOption one is this and thatmdash;be sure to include why its great/label/divdiv classradiolabelinput typeradio nameoptionsRadios idoptionsRadios2 valueoption2Option two can be something else and selecting it will deselect option one/label/divdiv classradio disabledlabelinput typeradio nameoptionsRadios idoptionsRadios3 valueoption3disabledOption three is disabled/label/div/div/div/form/div/div!--下一步按钮--button classbtn btn-success pull-right下一步/button/div/div /div /body /html View Code  先在view里创建一个index的函数 def index(request): return render(request,index.html) 这里我们需要导入HttpResponse然后再url.py新增index的路径 from . import views urlpatterns [url(r^admin/, admin.site.urls),url(r^login/, views.login),url(r^index/, views.index), ] 在login函数里写如下代码 def login(request):if request.method POST:email request.POST.get(email)pwd request.POST.get(pwd)if email zouzou and pwd 123:return redirect(/index/)# return HttpResponse(ok)else:return render(request,login.html) 这样我们如果输入的是zouzou和123则会跳转到index页面那如果我们需要错误的时候给我们提示怎么办呢django提供了我们模版语言;{{变量名}}我们在login.html的button按钮下面加入如下代码 button typesubmit idb1 classbtn btn-block btn-primary登录/buttonp stylecolor: red;text-align: center{{ error_msg}}/p 在去修改login函数里的代码 def login(request):error_msgif request.method POST: #如果是post表示提交数据email request.POST.get(email)pwd request.POST.get(pwd)if email zouzou and pwd 123:#登录成功跳转到index页面return redirect(/index/)# return HttpResponse(ok)else:#登录失败提示用户名密码错误error_msg 邮箱或密码错误#如果是GET表示要获取这个页面return render(request,login.html,{error_msg:error_msg}) 这样我们输入正确的邮箱和密码就会跳转到index页面错误的会提示  app 上面我们把login函数和index函数都放到了views.py文件里面。试想一下如果我们的项目有成百上千和函数呢放到一个py文件里是不是很麻烦。 python给我们提供了一个app我们可以把一个模块放到一个app里可以有多个app不同的功能放到不同的app里面。   创建app 如下我们创建了一个叫“appTest01”的项目 python manage.py startapp appTest01 创建完app后我们要告诉Django我们创建了一个叫“appTest01”的app去setting.py里加上下面的代码。 INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,appTest01.apps.Apptest01Config, # 告诉django我们创建了一个叫appTest01的app# appTest01, # 上面代码的简写方式 ] 上面的设置好了之后我们把之前在view.py里写的代码放到刚创建的appTest01下的view.py里面然后去url.py里把导入的view.py改一下。启动我们的项目访问登录页面能正常访问就表示我们的设置是没有问题的 ORM 前面我们的邮箱和密码是写死的。我们可不可以从数据库里面读取数据做一个判断呢这时我们就要用到ORM了那什么是ORM呢 ORM就是一群写代码的懒的写sql语句写了一个工具自动生成sql语句 ORMObject Relational Mapping(关系对象映射) 类名对应------------》数据库中的表名 类属性对应---------》数据库里的字段 类实例对应---------》数据库表里的一行数据   ORM的优势 Django的orm操作本质上会根据对接的数据库引擎翻译成对应的sql语句所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite....如果数据库移只需要更换Django的数据库引擎即可   ORM的缺点就是执行效率低 1.创建数据库 由于ORM没有没有创建数据库的方法所以我们手动创建一个数据库 create database mysite; 2.告诉Django连接哪个数据库 因为Django默认的数据库是sqlite3我们要使用mysql所以要告诉mysql去setting.py里修改如下代码 DATABASES {default: {ENGINE: django.db.backends.mysql, # 连接数据库的类型NAME: mysite, # 数据库名HOST: 127.0.0.1, # 数据库主机地址PORT: 3306, # 数据库的端口USER: root, # 登录数据库的用户名PASSWORD: 123456, # 登录数据库的密码} } 3.用什么连接数据库 上面我们已经告诉了django连接哪个数据库那用什么连利用第三方的包比如第三方包pymysql和MySQLdb因为MySQLdb不支持python3所以我们使用pymysql来连接数据库之前也写过pymysql连接mysql的文章 去和setting.py同级的__init__.py里告诉Django用pymysql模块代替默认的MySQLdb去连接MySQL数据库写上如下代码 import pymysqlpymysql.install_as_MySQLdb() 4.创建数据表 数据库已经配置好了也告诉了用什么连然后我们使用ORM去创建一个数据表。 在appTest01/models.py的文件中创建类只能在这里面创建类必须继承models.Model from django.db import models# Create your models here.class User(models.Model):id models.AutoField(primary_keyTrue) # 创建一个自增的id作为主键email models.CharField(max_length32) # varchar(32)pwd models.CharField(max_length32) # varchar(32) 代码解释 我们创建了一个User的类上面也说过类名对应的数据库表所以会给我们创建一个User的数据表。类下面的就是ORM的语法创建了三个字段分别是id主键和长度为varchar32的email和pwd字段 5.生成数据表 现在我们已经万事具备只欠东风了只要生成数据表就可以了ORM提供了我们两条命令来生成数据表 1. python manage.py makemigrations #根据app下的migrations目录中的记录检测当前model层代码是否发生变化 结果 Migrations for appTest01:appTest01\migrations\0001_initial.py- Create model User 2.执行完下面的代码如果都显示OK就表示数据表创建成功了 python manage.py migrate #把orm代码转换成sql语句去数据库执行 使用pycharm连接mysql数据库 点击右边的DataBase     使用ORM查询数据 上面的apptest01_user是我们创建的表其他的都是django默认帮我们创建的。我们往数据表里插几条数据 这样数据我们有了那我们怎么获取到数据库里的数据和用户输入的数据对比呢ORM提供了我们一种User.objects.filter(email, pwd) 的方法来查询数据 注意前面的Uer是我们的数据表名email和pwd是我们数据表里的字段那我们是不是可以修改一下登录函数了呢 from django.shortcuts import render,HttpResponse,redirect from appTest01.models import User def login(request):error_msgif request.method POST: #如果是post表示提交数据ema request.POST.get(email)password request.POST.get(pwd)res User.objects.filter(emailema,pwdpassword)print(res)if res:#登录成功跳转到index页面return redirect(/index/)# return HttpResponse(ok)else:#登录失败提示用户名密码错误error_msg 邮箱或密码错误#如果是GET表示要获取这个页面return render(request,login.html,{error_msg:error_msg})def index(request):return render(request,index.html)   如果查询到res的值就是 QuerySet [User: User object] 查询不到res的值就是 QuerySet [] 如果要获取对应的值可以用下面的方法 print(res[0].id,res[0].email,res[0].pwd) # 获取到数据库里对应的字段 对象.属性《-----》数据表里具体字段的值 总结 1. form表单提交数据的三个要素   1.1. form标签必须要有action和method属性   1.2. 所有获取用户输入的标签必须放在form表单中必须要有name属性  1.3. 必须要有submit按钮   2. Django 基础必会三件套 from django.shortcuts import HttpResponse, render, redirect  2.1. HttpResponse      返回一个指定的字符串时   2.2. render        返回一个HTML文件   2.3. redirect      跳转   3. request相关的属性  3.1. request.method -- 返回的是请求的方法全大写GET/POST ...  3.2. request.GET -- 取得是URL里面的参数类似于字典的数据结构  3.3. request.POST -- post提交的数据类似于字典的数据结构 4. Django的模板语言 {{ 变量名 }}     5. Django项目app -- 项目中又分了一级Python包,不同的功能放到不同的包里面  5.1. 创建app     python manage.py startapp app01  5.2. 告诉Django创建了一个app     在settings.py找那个的INSTALLED_APPS中添加新创建的app 6. Django中ORM的使用  6.1. 用处     6.1.1. 操作数据表     6.2.2. 操作数据行   6.2. 使用     6.2.1. 手动创建一个数据库      - create database mysite;     6.2.2. 告诉Django连哪个数据库       DATABASES {         default: {           ENGINE: django.db.backends.mysql, # 连接数据库的类型           NAME: mysite, # 数据库名           HOST: 127.0.0.1, # 数据库主机地址           PORT: 3306, # 数据库的端口           USER: root,           PASSWORD: 123456,           }          }   6.3. 用什么连数据库     利用第三方的包比如第三方包pymysql和MySQLdb     告诉Django用pymysql模块代替默认的MySQLdb去连接MySQL数据库     和settings.py同级的__init__.py文件写上   import pymysql pymysql.install_as_MySQLdb()     6.4. 在app/models.py的文件中创建类只能在这里面创建     类必须继承models.Model   6.5. 两个命令     6.5.1. python manage.py makemigrations -- 把models.py的变更记录一下注意要保证数据库里的和ORM变更记录一样否则会报错    6.5.2. python manage.py migrate -- 把上面的变更记录翻译成SQL语句去数据库执行    6.5.3. ORM查询       User.objects.filter(email, pwd)     6.5.4.数据表名或结构变了都要重新执行一下6.5.3转载于:https://www.cnblogs.com/zouzou-busy/p/11123780.html
http://www.zqtcl.cn/news/317902/

相关文章:

  • 创建网站的代码公司网站建设服务公司
  • 徐州建站推广仿织梦长沙网站公司
  • 中山做网站的新闻静态网站模板下载
  • 以学校为目标做网站策划书企业管理软件都有哪些
  • 黄石网站开发云开发小程序源码
  • 重点实验室网站建设萧山好的做网站的公司
  • 物流网站的建设网站建设优化是什么鬼
  • 门户网站建设项目书页面设计一般用什么软件
  • 安徽城乡建设 厅网站电子商务网站建设需要哪些步骤
  • 网站建设应该懂什么知识青岛模板网站建设
  • 免费cms建站系统有哪些网站设计项目总结
  • 做网站湖州网站后台管理系统如何使用
  • 网站建设报价单-中英文版长春省妇幼网站做四维
  • 注册网站免费网站上传小马后怎么做
  • 我省推行制度推动山西品牌建设整站优化网站
  • 临海手机网站设计网站设计 深圳
  • 网站推广做哪个比较好百度怎么优化排名
  • 做jsp网站时怎么预览wordpress安装不上
  • 网站建设深圳官网怎么制作网站镜像
  • 弹幕网站开发难么招生网站建设的意义
  • 网站空间多大合适软件开发培训机构网课
  • 13个实用平面设计网站网络推广一个月的收入
  • 淮安企业网站制作校园网网络规划与设计方案
  • html完整网站开发自媒体平台账号注册
  • 厦门seo网站网站空间 群集
  • 青岛网站推广方案营销自动化平台
  • 管理信息系统与网站建设有什么区别python版wordpress
  • 济南市建设行政主管部门网站公众号登录入口官网
  • 深圳苏州企业网站建设服务企业做网站需要什么条件
  • 电脑什么网站可以做长图攻略公众号 微网站开发