57.2-Django之GET和POST调试、模板原理

2020-08-06  本文已影响0人  BeautifulSoulpy
趁你现在还有时间,尽最大努力做你最想做的那件事,过你最想过的那种生活。也许我们始终都是一个小人物,但这并不妨碍我们选择用什么方式去生活,这个世界永远比你想的要更精彩!

总结:

  1. Django最常用的东西都涵盖了;
  2. 前后端分离:前端:JS、css、react;后端:Django 纯粹解决数据问题;
  3. ctrl+B 查看模块源代码;<hr> 横线

Django模板

如果使用react实现前端页面, 其实Django就没有必须使用模板, 它其实就是一个后台服务程序, 接收请求, 响应数据。接口设计就可以是纯粹的Restful风格。

WSGI server处理response转换为html是一个复杂的过程;网页主体模板大体是相似的,改变的是数据;

模板的目的就是为了可视化,将数据按照一定布局格式输出,而不是为了数据处理,所以一般不会有复杂的处理逻辑。模板的引入实现了业务逻辑和显示格式的分离,这样,在开发中,就可以分工协作,页面开发完成页面布局设计,后台开发完成数据处理逻辑的实现。

Python的模板引擎默认使用Django template language(DTL) 构建(语言)

采用postman调试 :请求方法Method

GET 请求获取URL对应的资源,请求的第一行(头、URL)
POST 提交数据至服务器端, post部分内容在body中;
HEAD 和GET类似,不过不返回消息response正文,只返回头部信息;

1.Get方法

查询字符串是通过get方法;


2. POST方法

CSRF解决安全问题;


CSRF报错关掉 MIDDLEWARE # django.middlewarre.csrff.CsrfViewMiddleware
id=100-&name=tom&name=jerry&name=ben 在 post / body中form-data 修改为
id:100
name:tom
name:jerry
name:ben

<QueryDict:{'id':['100'],'name':['tom','jerry','ben']}>   #正确格式;
1. 模板配置

blog12/下新建templates目录,在settings.py中, 设置模板项目的路径;

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],     #  templates模块路径 ;
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

DIRS 列表,定义模板文件的搜索路径顺序
APP_DIRS 是否运行在每个已经安装的应用中查找模板。应用自己目录下有templates目录,例如、
django/contrib/admin/templates。如果应用需要可分离、可重用,建议把模板放到应用目录下
BASE_DIR 是 项目根目录,os.path.join(BASE_DIR, 'templates')就是在manage.py这一层建立一个目录
templates。这个路径就是以后默认找模板的地方。

2.模板渲染
模板页
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>首页</title>
</head>
<body>
    <h1>欢迎您访问!</h1>
    <p>我的数据部分。</p>
</body>
</html>
3. 模板处理

将request处理完成之后,生成一个上下文字典context,然后将这个字典凑到这个模板index中,形成一个大字符串,然后response给浏览器渲染;

2个步骤
1、加载模板
模板是一个文件,需要从磁盘读取并加载。要将模板放置在
2、渲染
模板需要使用内容数据来渲染,生成HTML文件内容

# urls
from django.template import loader
from django.template.backends.django import  Template
from django.shortcuts import  render

def index(request:HttpRequest):
    """视图函数:请求进来返回响应"""
    # template:Template = loader.get_template('index.html')   # 加载器搜索模块 并加载;
    # print(type(template))
    context = {'school':'magedu'}   #正文字符串  数据传输
    # html = template.render(context)   # render拼接字符
    # print(html)
    # return HttpResponse(html.encode())
    return render(request,'index.html',context,status=201)

urlpatterns = [
    url(r'^admin/', admin.site.urls),   # 正则表达式模式匹配
    url(r'^$', index),   # 以它开头、结尾的;
    url(r'^index$', index),  # 以 index开头 index1、index/ ;
    # 两个不同的函数指向同一个问题url;不是多对多;
]

### blog12/templates/index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>首页</title>
</head>
<body>
    <h1>欢迎您访问!</h1>
    <p>我的第一个段落。</p>
    <hr>
    {{school}}    // 上下文字典的   key
</body>
</html>
上一篇下一篇

猜你喜欢

热点阅读