美文网首页
57.2-Django之GET和POST调试、模板原理

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

作者: BeautifulSoulpy | 来源:发表于2020-08-06 11:13 被阅读0次
    趁你现在还有时间,尽最大努力做你最想做的那件事,过你最想过的那种生活。也许我们始终都是一个小人物,但这并不妨碍我们选择用什么方式去生活,这个世界永远比你想的要更精彩!

    总结:

    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>
    

    相关文章

      网友评论

          本文标题:57.2-Django之GET和POST调试、模板原理

          本文链接:https://www.haomeiwen.com/subject/hgoarktx.html