Django之初步实现登录功能,APP及ORM
form表单提交数据注意事项
1、注意form标签的书写,form标签必须有method属性和action属性
2、所有获取用户输入的表单标签(如input等)需放在<form></form>标签中,且表单标签(input等)需要有name属性。
3、form表单中必须有submit按钮。
示例如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="normalize.css"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="/static/bootstrap-3.3.7/css/bootstrap.min.css"> <style> body{ margin-top: 200px; background-color: rgba(0,0,0,0.1); } </style> </head> <body> <div class="container"> <div class="row"> <form class="form-horizontal col-md-4 col-md-offset-4" method="post" action="/login/"> <div class="form-group"> <label class="col-sm-3 control-label" >用户名</label> <div class="col-sm-9"> <input type="text" class="form-control" placeholder="用户名" name="username"> </div> </div> <div class="form-group"> <label for="inputPassword3" class="col-sm-3 control-label">密码</label> <div class="col-sm-9"> <input type="password" class="form-control" id="inputPassword3" placeholder="密码" name="pwd"> </div> </div> <div class="form-group"> <div class="col-sm-offset-3 col-sm-9"> <div class="checkbox"> <label> <input type="checkbox"> 记住我 </label> </div> </div> </div> <div class="form-group"> <div class="col-sm-offset-3 col-sm-9"> <button type="submit" class="btn btn-default">登录</button> </div> </div> </form> </div> </div> <script src="../static/jquery-3.3.1.min.js"></script> <script src="../static/bootstrap-3.3.7/js/bootstrap.min.js"></script> </body> </html>
def login(request): if request.method == "POST": #必须是大写 print(request.POST) # <QueryDict: {'username': ['chris'], 'pwd': ['123']}> username=request.POST.get("username") pwd=request.POST.get("pwd") if username == "chris" and pwd == "123": return redirect("https://www.baidu.com/") return render(request,"login.html") # request.method 获取到客户端请求方法(GET/POST...) # request.POST 获取到提交form表单提交的所有数据,如下 # <QueryDict: {'username': ['chris'], 'pwd': ['123']}> # redirect 跳转到指定页面
Django之APP
一个Django项目中可以创建多个app(子项目),用来隔离不同功能的模块代码,多个app之间消息共通。
创建APP
方法1
#创建命令 python3 manage.py startapp app01 #app01为创建的app名称,可以取具有明确意义的名称
方法2
在创建新的Django项时创建一个app
方法3
在pycharm中的manage.py面板中依次输入命令,
startapp app01
修改Django中app文件夹配置
#在Django项目的settings文件中添加新增的app INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config', # 'app01', ] #以上2种app01的添加方法皆可
ORM简介
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
代码操作数据库的方式
1、直接执行sql语句,执行效率高,开发效率低。
2、按照特定的语法写,翻译成sql语句再执行,开发效率高,执行效率低。
Django之ORM
1、创建数据库
Django不能对数据库进行操作,要事先用sql语句创建数据库
create database 数据库名;
2、Django项目连接数据库
(1)配置数据库连接信息
# 在Django项目的settings文件中,;配置数据库链接信息 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 指定连接的数据库(MySQL) 'NAME': '数据库名称', # 数据库(database)要自己创建,orm不能操作库 'HOST': '127.0.0.1', # 数据库IP 'PORT': 3306, # 数据库端口 'USER': 'root', # 数据库用户名 'PASSWORD': 'xx', # 数据库密码 } }
(2)使用pymysql模块连接MySQL数据库
# 在Django项目的和settings.py文件同目录下的__init__.py文件中,添加如下代码 import pymysql pymysql.install_as_MySQLdb() #Django默认使用的是MySQLdb模块连接数据库,但pycharm与该模块不兼容,则指定使用pymysql模块代替MySQLdb
3、在app文件夹下的model.py中创建类
# 首先导入models模块 from django.db import models # 创建的类对应数据库中的表,该类必须继承models.Model 示例:创建一个user表 class User(models.Model): id = models.AutoField(primary_key=True) # 自增主键 name = models.CharField(max_length=16) # varchar(16) pwd = models.CharField(max_length=128)
4、执行创建表的操作
方法1
# 命令行输入如下命令 1. python3 manage.py makemigrations # 登记models.py的修改 2. python3 manage.py migrate #将修改翻译成SQL语句,去数据库执行,完成数据库相关操作
方法2:在manage.py面板中依次输入makemigrations ,migrate