模型:承载数据的对象并提供了对数据的curd(增删改查)
模性类必须继承models.Model类或子段:
class BlogUser(models.Model)
字段:
username = models.CharField(max_length=30)
pwd = models.CharField(max_length=32)
在MySQL数据库里创建一个数据库为(数据库名:pyblog_db 字符集为:utf_8)
settings.py (设定)
更改django的数据库链接引擎
DATABASES (django driver mysqlclient 1.3.7+) django要安装一个驱动程序(driver)mysqlclient 1.3.7+
安装驱动程序在DOS命令下输入 pip linstall mysqlclient
DATABASES = { (数据库)
'default';{ (默认)
‘ENGINE':'django.db.backends.mysql', (引擎)
'NAME':'pyblog_db', (名字)
'USER':'root', (用户)
'PASSWORD':'mysql的密码', (密码)
'HOST':'locahost', (机主)
'PORT':'3306', (端口)
在settings.py的 INSTALL_APP中添加逆自己定义的app
执行manage.py的shell命令 ctrl+alt+r
输入:makemigrations bloguser [appname] 生成创建数据库的脚本
它会在bloguser的app下创建一个 migrations\0001_initial.py
输入:sqlmigrate bloguser 0001[migrationname] 打印SQL语句
为了显示创建MySQL,pyblog_db数据库里表的语句
输入migrate bloguser 0001 运行创建数据库表的脚本
在bloguser数据库中按照以上0001_initial.py中的语句添加表
tempates (模板)
创建bloguser目录
在bloguser目录下创建add.html和show.html两个文件
add.html中的内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="register" method="post">
{% csrf_token %} # 指纹验证 必须有
用户名:<input type="text" name="username"><br />
密码:<input type=password" name="pwd"><br/>
<input type="submit" value="注册">
</form>
</body>
</html>
show.html中的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
恭喜逆注册成功!
{{ blogUser.username }}---{{ blogUser.pwd }}
</body>
</html>
查看settings.py文件下的TEMPLATES中是否有,
'DIRS':[os.path.join(BASE_DIR,'templates')]这句代码。
它的作用是把bloguser目录下的文件关联在一起
在bloguser下
views.py
from django.shortcuts import render (导入一个渲染器模块)
from .models import *
#Create your views here. (创建你的观点)
def register(request):
# GET 要来注册 add.html
if request.method == 'GET':
return render(request,'bloguser/add.html',{})
# POST 注册 show.html
else:
blogUser = BlogUser()
blogUser.username = request.POST.get('username')
blogUser.pwd = request.POST.get('pwd')
blogUser.save()
return render(request,'bloguser/show.html',{'blogUser':blogUser})
重定向的设定要改变POST的返回值,
return redirect(reverse('user:show',args=[blogUser.id]))
在bloguser文件下创建urls.py文件,用它和pyblogsys文件下的urls.py关联
在pyblogsys下的urls.py中的内容:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('user/',include('bloguser.urls',namespace='user')),
]
在bloguser下的urls.py中的内容:
from django.urls import path
from .views import *
app_name='user' #和重定向有关
urlpatterns = [
path('register',register),
path('show/<int:id>',show,name='show'),#重定向的设置 连接views.py里的show函数
]
转发和重定向:
转发:一次请求和响应,请求的地址没有变化,如果此时刷新页面就会重做现象
重定向:一次以上的请求和响应,请求地址发生一次以上的变化,如果此时刷新页面不会发生重做现象
重定向:要在views.py里导入redirect(重定向模块) 再导入reverse模块(解决跳转路径)
重定向的意思是重新导入另一个地址,在views.py文件里新定义一个个行为
def show(request,id): (它与bloguser里的urls.py连接)
blogUser = BlogUser.objects.get(pk=id)
return render(request,'bloguser/show.html',{'blogUser':blogUser})