zoukankan      html  css  js  c++  java
  • Django处理浏览器的请求的流程

    Django处理浏览器的请求的流程

    1.django处理浏览器的请求的流程步骤:

    1. 请求发送到了wsgi,wsgi 封装请求的相关数据(request)
    2. django去匹配路径,根据路径判断要执行哪个函数
    3. 执行函数,函数中处理具体的业务逻辑
    4. 函数返回响应,django按照 HTTP 协议的响应的格式进行返回

    2.发请求的途径:

    1. 在浏览器的地址栏中输入地址回车 ---> get
    2. a标签 ---> get请求
    3. form表单 ---> post/get请求

    3.get和post请求的区别

    • get 是为了 获取一个资源
    • request.GET       数据在url地址中可以看到:?k1=v1&k2=v2        
    • get请求没有请求体
    • post是为了提交数据
    • request.POST
    • 数据在请求体中,不在url路径中显示

    4.views.py  视图函数

    def xxx(request):
        # 业务逻辑
    
        return  响应
    
    # 响应的方式
    HttpResponse('字符串')   # 返回一个字符串
    render(request, '模板的文件名', {'k1': v1})
    redirect('地址')     # 重定向
    
    request.method    # 请求方式   GET  POST

    5.ORM

    models.py   模型函数

    class Xxx(models.Model):
        name = models.CharField(max_length=32)   # 即类似 MySQL 数据库中的varchar(32)
    
    
    class Yyy(models.Model):
        name = models.CharField(max_length=32)
        xxx = models.ForeignKey('Xxx', on_delete=models.CASCADE)
        """
        on_delete   2.0版本后是必填的
            models.CASCADE      级联删除
            models.PROTECT      保护删除
            models.SET(v)       删除后设置为某个值
            models.SETDEFAULT   删除后设为默认值
            models.SET_NULL     删除后设置为Null
            models.DO_NOTHING   什么都不做
        """

    ORM的操作

    from xxxx import models
    
    models.Xxx.objects.all()   # 获取所有的数据  QuerySet 对象列表
    models.Xxx.objects.get(name='xx', id='1')   # 获取一条存在且唯一的数据
    models.Xxx.objects.filter(name='xx')   # 获取多条数据  

    新增

    models.Xxx.objects.create(name='xx')   # 新增的对象

    删除

    models.Xxx.objects.get(pk=1).delete()
    models.Xxx.objects.filter(pk=1).delete()   # 批量删除

    编辑

    foo_obj.name = 'xx'
    foo_obj.save()    # 保存到数据库
    
    models.Yyy.objects.filter(pk=1).updata(name='x', xx_id=xxx的id)  # 批量更新

    6.Template (部分模板语法)

    return render(request, '模板的文件名', {'k1': v1, 'k2': v2})

    {{ k1 }}   {{ k2 }}
    
    for 
    {% for i in k1 %}
        {{ forloop.counter }}
        {{ i }}
    {% endfor %}
    
    if 
    {% if 条件 %}
        xxx
    {% elseif 条件1 %}
        xxx
    {% else %}
        xxx
    {% endif %}
    
    ...

    以上就是本人的一些总结,希望对各位有所帮助。

  • 相关阅读:
    php 正则检索中文
    PHP 文件
    mysql优化のLIKE
    前端小知识
    Oracle数据库自动备份[转载]
    错误: 在类 com.js.sort.ArraySort 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application
    idea中deployment点击加号没有出现artifact
    数据查不到(空格问题)
    java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
    org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.scheduling.TaskScheduler' available
  • 原文地址:https://www.cnblogs.com/xcbb/p/14819387.html
Copyright © 2011-2022 走看看