赞
踩
上文中,我们已经设置了settings,要和数据库相连接,必须存在这么一个数据库,在MySQL中新建一个与settins中同名字的数据库。
创建好数据库后,创建表格不需要在MySQL中,在models.py文件中,创建数据库表格:
from django.db import models
#Creation
class student(models.Model):#类名字对应着表名,下面的变量就是属性
objects = models.Manager()
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=64,null=False)
age = models.IntegerField()
#user_id = models.CharField(max_length= 64)
user_password = models.CharField(max_length=64)
email = models.CharField(max_length=64)
(1)执行python manage.py makemigrations,将模型类加载的__initial__.pyz中
(2)执行python manage.py migrate,将所有表迁移到我们创建的数据库中,返回到数据库刷新后可以看到子的表了
(3)AutoField() 根据已有id自增长的整形唯一字段,一般每个model类不需设置该字段,因为django会为每个model自动设置。django默认会为每个model类添加如下语句:id = models.AutoField(primary_key=True) 当其他字段添加了primary_key属性,则不会创建id字段了每个model类仅能有一个主键
(4)[详细字段函数设置参考](https://blog.csdn.net/pugongying1988/article/details/72870264)https://blog.csdn.net/pugongying1988/article/details/72870264
在开始编写之前,在app中设置新的urls,方便路由导入
项目主urls:
from django.conf.urls import url
from django.contrib import admin
from django.urls import path,include#include可以导入到自己的app路由
from studentapp.views import index
urlpatterns = [
#url(r'^index/$', index),
url(r'^studentapp/', include("studentapp.urls")),#方便导入到app中的urls也就是在输入网址的时候,127.0.0.1:8000/studentapp/+index(或者其他的)就可以在app中寻找路由从而调用对应的views中的函数
]
studentapp.urls设置:
from django.conf.urls import url
from studentapp import views
from studentapp.views import register
urlpatterns = [
url(r'^index/$', views.index),
url(r'^login/$', views.login),
url(r'^register/$', views.register),
url(r'^home/$', views.home),
url(r'^add_student/', views.add_student),
url(r'^student_list/', views.student_list),
]
直接写创建对应的函数:
from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render, redirect from studentapp import models # Create your views here. def index(request): return render(request,"index.html") def register(request): # 解读request if request.method == "POST": # 获取表单内容,且字段要和模板文件对应 student_name = request.POST.get("name") student_age = request.POST.get("age") student_email = request.POST.get("email") student_password = request.POST.get("password") # 保存到数据库 models.student.objects.create(name=student_name, age=student_age, user_password = student_password, email = student_email) #return HttpResponse("注册成功!!") return render(request,"index.html")
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> <form action="/studentapp/login/" method="POST"> <!--防止被攻击--> {% csrf_token %} <p> email<input type="text" name = "emil"> </p> <p> 密码<input type="text" name = "password"> </p> <p> <button type = "submit" class = "btn">登陆</button> </p> </form> </div> <div> <!-- action指向要把数据传到 注册路由 对应views的注册函数,还有其他的方法,建议可以多多尝试--> <form action="/studentapp/register/" method="POST"> <!--加csrf_token防止被攻击--> {% csrf_token %} <p> 姓名<input type="text" name = "name"> </p> <p> 年龄<input type="text" name = "age"> </p> <p> email<input type="text" name = "email"> </p> <p> 密码<input type="text" name = "password"> </p> <p> <button type = "submit" class = "btn">注册</button> </p> </form> </div> </body> </html>
它的原理,form表单将四个字段‘name’,‘age’,‘email’,'password’封装好,通过action中的路由进行传递,系统在找的时候,根据"/studentapp/register/"然后顺序是:
主urls——>studentapp.urls的url(r'^register/$', views.register),——>views.py中的register函数,
通过如下代码可以获取对应的字段,字段一定要与html端接受时的字段一样:
if request.method == "POST":
student_name = request.POST.get("name")
student_age = request.POST.get("age")
student_email = request.POST.get("email")
student_password = request.POST.get("password")
再通过如下代码保存到数据库中:
models.student.objects.create(name=student_name, age=student_age, user_password = student_password, email = student_email)
经过上述步骤,就已经完成了注册功能,设计的时候建议从使用者的角度出发,先html,后路由,最后views函数
pycharm自带工作台,如图:
由于我是先建立的python项目,所以我的应该起初是在student_system中,一定要进入到studentsys这个django项目里才能使用到manage.py文件,它与manage.py同级,和doc命令一样 "cd ####"就可以进入了,输入
python manage.py runserver
启动后,打开浏览器,输入
127.0.0.1:8000/studentapp/index/
后回车,完成,可进行相关注册测试,如果注册成功(如果不报错肯定一次性成功),你可以让它直接进入到管理主页面或者重新返回index.html,在return render处修改即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。