Django

模型:承载数据的对象并提供了对数据的curd(增删改查)
  模性类必须继承models.Model类或子段:
  class BlogUser(models.Model)
      字段:
      username = models.CharField(max_length=30)
      pwd = models.CharField(max_length=32)

在MySQL数据库里创建一个数据库为(数据库名:pyblog_db 字符集为:utf_8)


pyblogsys
  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})

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章