一:
将所有的静态文件(css,js,前端第三方库)都默认放在static文件夹,并且在settings中配置:
# 接口前缀 默认情况下这个前缀跟静态文件夹名字一样(跟你的静态文件夹的名字一点关系都没有) STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static'), # 就是你的静态文件夹路径 os.path.join(BASE_DIR,'static1'), os.path.join(BASE_DIR,'static2') ] # ps:会依次查找列表中所有的静态文件路径 找到的话立刻停止,都没有找到返回404
二:
创建应用:python manage.py startapp app01,修改配置文件
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config' # 添加应用 ]
三:
在应用中的reg中写好注册页面(reg.html):
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> {# 注意 把css文件,和js文件改为本地的,因为会有提示#} <link rel="stylesheet" href="\static\bootstrap-3.3.7\css\bootstrap.min.css"> <script src="\static\bootstrap-3.3.7\js\bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <h1 class="text-info">register</h1> <div class="col-md-6 col-md-offset-3"> {# action="":注意这里form表单的默认提交地址为自身(/reg)#} {# 提交方式由默认的get改为post#} <form action="" method="post"> <p class="text-info">username:<input type="text" name="username" class="form-control"></p> <p class="text-info">password:<input type="password" name="password" class="form-control"></p> <input type="submit" class="btn btn-primary"> </form> </div> </div> </div> </body> </html>
ps:这里有一个注意点,此时点击提交按钮会报错,解决方法,在项目的settings文件中修改配置:
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 点击提交报错,注释掉这一行 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
四:
连接Django和Mysql数据库:
1,修改配置文件:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 修改引擎 'NAME': 'mydatabase', # 数据库名 'HOST': '127.0.0.1', # IP 'PORT': 3306, # mysql端口 'USER': 'root', # 用户名 'PASSWORD': '641220' # 密码 } }
2,告诉django用pymysql替换它默认mysqldb模块连接数据库:
方式1:在你的项目文件夹下面的__init__.py
方式2:也可以在你的应用文件夹下面的__init__.py
import pymysql pymysql.install_as_MySQLdb() # 告诉django用pymysql代替mysqldb连接数据库
3,django的orm不能帮你自动的创建库,但是可以帮你自动的创建表(一个django工程就使用一个库)
在应用的models中创建一个类,映射到数据库的表:
from django.db import models # Create your models here. class User(models.Model): # user表的主键字段名就是id id = models.AutoField(primary_key=True) # varchar(32) name字段是varchar(32) CharField在定义的时候必须要加max_length参数 name = models.CharField(max_length=32) password = models.CharField(max_length=16) def __str__(self): return self.name
4,数据库迁移:
1:将你的数据库变动记录到一个小本本上(并不会帮你创建表) (python manage.py makemigrations)
2:将你的数据库变动正在同步到数据库中 (python manage.py migrare)
此时这张表已经创建完毕。
五:
在views中配置reg函数:
def reg(request): # 判断请求方式 if request.method == 'POST': username = request.POST.get('username') # get中的名称对应 html表中 input标签中name的值 password = request.POST.get('password') # 插入方式一: # user_obj = models.User.objects.create(name=username,password=password) # 插入方式二: user_obj = models.User(name=username,password=password) user_obj.save() # 对象调用save方法保存到数据库 return render(request,'reg.html')
由于注册成功之后需要展示信息,因此需要创建userlist.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="\static\bootstrap-3.3.7\css\bootstrap.min.css"> <script src="\static\bootstrap-3.3.7\js\bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <h1 class="title">show data</h1> <div class="col-md-8 col-md-offset-2"> <table class="table-hover table table-bordered table-striped"> <thead> <tr> <th>id</th> <th>name</th> <th>password</th> </tr> </thead> <tbody> {# 将生成的一行放在for循环里面,每有一个对象就会生成一行#} {% for user_obj in user_list %} <tr> <td>{{ user_obj.id }}</td> <td>{{ user_obj.name }}</td> <td>{{ user_obj.password }}</td> </tr> {% endfor %} </tbody> </table> </div> </div> </div> </body> </html>
在views中配置userlist函数:
def userlist(request): # 获取数据库数据 user_list = models.User.objects.all() # select id,name,password form user; # print(user_list.query) # 只要是QuerySet就可以点query查看获取到当前QuerySet对象的内部sql语句 # for user_obj in user_list: # print(user_obj.pk,user_obj.name) return render(request,'userlist.html',locals())
注册成功
六:
登陆功能,设置login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script> {# 注意 把css文件,和js文件改为本地的,因为会有提示#} <link rel="stylesheet" href="\static\bootstrap-3.3.7\css\bootstrap.min.css"> <script src="\static\bootstrap-3.3.7\js\bootstrap.min.js"></script> </head> <body> <div class="container"> <div class="row"> <h1 class="text-info">login</h1> <div class="col-md-6 col-md-offset-3"> {# action="":注意这里form表单的默认提交地址为自身(/reg)#} {# 提交方式由默认的get改为post#} <form action="" method="post"> <p class="text-info">username:<input type="text" name="username" class="form-control"></p> <p class="text-info">password:<input type="password" name="password" class="form-control"></p> <input type="submit" class="btn btn-primary"> </form> </div> </div> </div> </body> </html>
配置登陆函数
def login(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') # 拿到整个表的数据 user_list = models.User.objects.all() for user_obj in user_list: if user_obj.name == username: if user_obj.password == password: return HttpResponse('login successful') # 校验成功返回login successful return HttpResponse('login failure') # 校验失败返回login failure return render(request,'login.html')
完成注册,登陆功能。