Django文件间关系图解

在这里插入图片描述

流程:

以用户注册为例

用户在页面网址栏中输入正确地址,进入urls路由到对应的视图函数中,视图函数返回到路由中对应的前端html文件,前端文件在用户输入models表中合法的内容后,通过

<input class="btn btn-primary btn-block" type="submit" value="注册">

input 控件,类型为submit(在点击注册按钮时提交页面中所有数据,可以在views文件中要什么获取什么),之后用户点击注册按钮,将form表单中的数据全部提交,在views视图文件中通过post(密文)或get(明文)方式获取前端数据,如果是post,要在form表单下添加 {% csrf_token %}
CSRF(跨域请求攻击)
html文件中:
action请求的地址,空为返回当前界面 method请求的方式

 <form action="" method="post">  
            {% csrf_token %}                

form表单中的文本输入框:

<input type="text" id="firstName" name="firstName" >

views文件中:

login_valid = request.POST.get("firstName") #前端界面中的name值

然后实例化表单中的内容

 t=Student()      #Student为models文件中的表
 t.firstName=firstName   #t.firstName中的firstName要与表单里出现的同名
 t.save()       #保存到数据库中
 return render(request,"seller/login.html",locals()) #需要正确的html路径

通过return又返回到前端界面上
这样就完成了注册

应注意的点:

创建数据库:

create database 库名 charset=utf8;
一定要加charset=utf8,不然会在加载前端界面时出现1366的错误在这里插入图片描述

创建APP及settings.py设置

在这里插入图片描述
Django鼓励多模块设计,快速开发
第一个static下的与app同名只不过首字母小写的seller是识别目录
Seller的app中含子urls,在Qshop父urls中用include包含
父urls

from django.urls import path,include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('seller/',include("Seller.urls")),
]

子urls

from django.urls import path
from Seller.views import *
urlpatterns=[
    path('index/',index),
    path('login/',login),
    path('gad/',goods_add),
    path('glt/',goods_list),
]

底下的static在虚拟环境中Qshop目录下输入
python manage.py collectstatic
指令,收集所有APP中的static的静态文件到该static文件中

templates(检索目录)是app下的固定名字,不能少一个s,这个目录会自动检索里面的html文件,在settings里面不用设置
在这里插入图片描述
因为settings中已经自动设置好了
在这里插入图片描述
settings中还有以下设置,其中STATIC_URL与MEDIA_URL不能相同,media目录会自动创建

STATIC_URL = '/static/'
STATICFILES_DIRS=(
    os.path.join(BASE_DIR,"static"),
)

MEDIA_URL='/media/'                
MEDIA_ROOT=os.path.join(BASE_DIR,"static")  #上传图片时的路径

model表单

直接对接数据库

models.ForeignKey(表名, on_delete=True)  #一对多关系ForeignKey 外键,on_delete=True在删除的时候连带关系也删除
models.TextField()            #文本框
models.ImageField(upload_to = "image")  #注册时的图片上传到image文件夹中
models.EmailField()        #邮箱格式
models.ManyToManyField(表名)   #多对多关系

ajax:

基于js的一个局部提交,不影响用户体验的技术,不刷新界面

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值