django 流程大全(超详细)

一.安装django

二.创建django

命令行创建 django-admin stratproject mysite

pychram创建

三.django运行

命令行运行python manage.py runserver

pycharm运行django项目

1.在设置启用支持django

2.编辑配置

3.完成设置

4.运行

四.django app

1.概念

在 Django 中,App(应用) 是项目的核心组织单元,它是一个可重用的模块化组件,专注于实现某个特定的功能或业务逻辑。比如常见的App类型,如用户管理、商品展示、订单处理等。这能让用户更直观地理解App的应用场景。

2.创建单个app

创建app命令行 cd 项目  python manage.py startapp web

创建多个app

先建立一个apps目录

然后在apps里创建app目录

最后命令行 python manage.py startapp spider  apps/spider ga

在apps把name = 'spider'改为name = 'apps.spider',项目同目录下的app则不用改

url和视图函数结合,一般url里的函数写在app里的视图里面,在由urls路由进行调用

五.路由系统

1.概念

路由系统的主要功能是解析用户请求的 URL,并根据预定义的规则将请求转发到相应的视图处理逻辑。它决定了用户访问某个 URL 时应该执行什么代码。

2.传统写法

匹配动态整型数字

匹配路径

匹配字符串

获得url字符串参数

3.正则写法

匹配数字字符串

匹配数字和字母字符串

匹配的两个格式

4.路由include分发

Django 的路由分发机制将用户请求的 URL 地址与后端的视图函数或类视图进行关联。当用户访问某个 URL 时,Django 会根据路由配置找到对应的视图逻辑来处理请求,并返回相应的响应内容。

1.导入相应的库

2.分发

3.在spiderapp目录创建urls.py

4.在在spider目录下views定义函数

5.在在spider目录下urls配置路由

6.访问成功,访问路径/spider/text9

六.视图系统

1.概念

在 Django 中,视图(View)是处理用户请求并返回响应的核心组件。视图的作用是接收用户的 HTTP 请求,处理请求数据(如参数、表单数据等),执行相应的业务逻辑,最终返回一个 HTTP 响应(如 HTML 页面、JSON 数据等)。

2.request对象

request是一个对象,包含请求相关所以东西,比如url,方式,url参数,请求体等

3.重定向

4.模板配置

在setting文件里配置

一般首先在根目录下的templates寻找,一般放公共的

一般来说在哪个app里就注册哪个模板,哪个业务放哪个app,如果单个app并且在项目同目录下则

直接web.apps.WebConfig

url定义,记住是render,不是重定向redirect

写html,别名用来跳转

配置路由

.

完成

5.响应体

定义响应头,前后端,跨域什么需要到

定义响应cookie

6.FBV(函数形式写)CBV(类形式写,前后端分离)

CBV

7.静态文件

在setting配置,设置优先在根目录的static找

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


体文件显示,在url.py

+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

七.模板

1.模板语法

函数传参到html,参数必须为字典

4

注意,在script里,传参除了数字其他要加''.

举例个例子爬取网易云热门音乐标题集成在web环境里

请求用xpath提取标题,然后导入字典里,在传给html

<ul>
    {% for i in arr %}
    <li>{
  
  { i }}</li>
    {% endfor %}
</ul>

效果如下:

对于字典里的字典进行集成web环境

则:爬起数据封装成字典注意字典套用字典

然后对前端页面进行优化

<ul>
       {% for k,v in dictt.items %}
       <li><a href={
  
  { v }}>{
  
  { k }}</a></li>
       {% endfor %}
   </ul>

最后结果

2.模板的继承

待更新

3.自定义模板

待更新

八.中间件

概念:

中间件有两种,一种请求中间件,例如:在请求到达视图之前,中间件可以检查用户是否已经登录,或者验证用户的权限。一种是响应中间件,例如:响应中间件可以统一设置响应头,例如设置 Content-TypeCache-Control 等,而无需在每个视图中重复设置。

1.原始方式

手动创建中间件

在setting设置中间件

请求经过call方法,get_response(request)

class myweb(object):
    def __init__(self,get_response):
        self.get_response = get_response
    def __call__(self, request):
        #进来前
        print(1)
        response = self.get_response(request)
        print(2)
        #进来后
        return response

视图输出3

测试最终结果

2.源码建议

from django.utils.deprecation import MiddlewareMixin
class myweb(MiddlewareMixin):
    def process_request(self, request):
        pass
    def process_response(self, request, response):
        pass

中间件流程

设置多个中间件,然后先后setting一一注册

最终顺序,中间件执行顺序结构是栈,先进后出。

3.process_views,路由匹配成功执行

   def process_view(self, request,view_func,view_args,view_kwargs):
        print(request,view_func)

4.process_exception,捕获视图异常

    def process_exception(self, request, exception):
        print(exception)
        return HttpResponse('异常了')

九.ORM(关系对象映射)

1.概念

是一种编程技术,用于将面向对象编程语言中的对象与关系型数据库中的表结构进行映射。它允许开发者通过操作对象的方式来操作数据库,而无需直接编写SQL语句,从而简化了数据库的交互过程。简单来说,提高开发效率,降低运行效率。

2.基本操作:

  在app里的modedels.py,编写类,然后在setting里注册app

from django.db import models

#表名称app名字加_UserInfo,会自己设置id,自增长,主键
class UserInfo(models.Model):
    #字符串
    name = models.CharField(max_length=16)
    #整型
    age = models.IntegerField()

django根据在models中类生成一个对数据库操作配置文件

python manage.py makemigrations

会在app下的migrations生成一个配置文件

内容如下:会自己生成id,自增长,主键。名称是UserInfo,

再通过命令转换为sql语句,生成表,更新表,链接数据库

python manage.py  migrate

在setting默认配置,默认连接在django下的sqlite3数据库

生成表

生成日志

要是不删掉字段,可以注释掉,在执行上面两命令。

要是增加字段,此时表里有数据,则需要增加默认值

约束:

  gender_choices=((0,"女"),(1,'男'))
    gender = models.SmallIntegerField(choices=gender_choices)

3.连接mysql。

django无法创建数据库,需要自己创建。

前提:pip install mysqlclient

然后再项目目录下setting.py配置

DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': BASE_DIR / 'db.sqlite3',
    # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 默认
            'NAME': 'django_demo',  # 连接的数据库
            'HOST': '127.0.0.1',  # mysql的ip地址
            'PORT': 3306,
            'USER': 'root',
            'PASSWORD': '123456'  # mysql的密码
            }
}

4.字段

verbose_name 注释

CharField 字符串

IntegerField 数字

default 默认

class UserInfo(models.Model):
    '''用户表'''
    #字符串
    User_name = models.CharField(verbose_name='用户名',max_length=16)
    #整型
    password =  models.CharField(max_length=32)
    #手机号码
    telephone = models.CharField(max_length=16)
    #年龄
    age = models.IntegerField(default=0)

5.增删改查

在视图函数里写

def text1(request):

    UserInfo.objects.create(User_name='xch',password='123',age=12,telephone='123')
    return HttpResponse('欢迎使用')

 增删查改所有操作

def text1(request):

    #增加数据
    UserInfo.objects.create(User_name='xch',password='123',age=12,telephone='123')
    #删除数据 ,条件
    UserInfo.objects.filter(age=0).delete()
    #删除所有数据据
    UserInfo.objects.all().delete()
    #获取所有数据,一般用于渲染前端页面
    data_list = UserInfo.objects.all()#对象
    for data in data_list:
        print(data.User_name,data.password,data.age,data.telephone)
    #获取符合条件第一条数据
    first_data = UserInfo.objects.filter(id=1).first()
    #更新数据符合条件更新
    UserInfo.objects.filter(id=2).update(User_name='xch',password='<PASSWORD>',age=12,telephone='123')
    # #全部更新
    UserInfo.objects.update(User_name='xch',password='<PASSWORD>',age=12,telephone='123')

    return HttpResponse('欢迎使用')

十.案例

案例一:数据库渲染到前端

1.先创建一张表,导入模块,设置路由与url对应

2.通过deepseek生成html

3.在数据库插入数据

4.传入数据

效果如下:

案例二:添加数据

加cursor生成一个相关联的页面 (cursor在手,天下我有)

2.其它步骤同上。添加跳转

3.form标签加‘post’,给输入的数据起别名

由post.get(获取数据)并保存数据

效果如下:

案例三 删除

1.通过id删除,新增视图和url对于关系

效果如下:

案例四:修改编辑

设置默认值

因为form提交方式为post,所以一开始访问为get方式,把原有属性传上去

提交方式为post

就重定向到原页面,效果如下

### 使用Django实现审批工作流的最佳实践 #### 选择合适的工作流库 对于基于Django的应用程序,有多个第三方库可以用来实现复杂的工作流逻辑。其中两个较为流行的选择是 `django-lb-workflow` 和 `Django River`。 - **django-lb-workflow** 是一个可重用的工作流库,适用于希望集成灵活且易于扩展的工作流机制到其应用中的开发者[^1]。 - **Django River** 提供了一个简单而强大的API来定义和操作多步骤的业务过程,并能够与其他流行的Django组件无缝协作,比如REST框架、Admin站点以及Channels等[^2]。 #### 设置基础环境 为了启动并运行带有审批流程的功能模块,在本地环境中安装必要的依赖项之后,可以通过访问默认提供的管理员界面来进行初步设置: ```bash pip install djangorestframework django-river python manage.py migrate python manage.py createsuperuser ``` 接着,按照指示完成超级用户的创建后,打开浏览器输入地址 `http://127.0.0.1:8000/admin/` 登录进入管理后台,这里可以直接管理和调整工作流的相关参数[^3]。 #### 实现具体功能 当涉及到具体的审批环节时,通常会涉及以下几个方面: - 定义模型结构:根据实际需求设计数据库表单,确保能记录每一步骤的信息变化; - 编写视图函数:处理前端提交的数据请求,控制流转方向; - 构建模板页面:为用户提供友好的交互方式查看当前进度或发起新的申请; 下面给出一段简单的Python代码片段作为例子展示如何利用有限状态机(`django-fsm`)配合Viewflow快速搭建起基本架构[^4]: ```python from viewflow import flow, frontend from viewflow.flow.views import CreateProcessView, UpdateProcessView from .models import ApprovalRequest @frontend.register class ApprovalFlow(flow.Flow): process_class = ApprovalRequest start = ( flow.Start( CreateProcessView, fields=["title", "description"] ).Permission(auto_create=True).Next(this.approve) ) approve = ( flow.Handler(this.send_for_approval). Next(this.check_approve) ) check_approve = ( flow.If(cond=lambda activation: ... ). Then(this.end). Else(this.reject) ) reject = ( flow.View(UpdateProcessView, fields=["rejection_reason"]). Assign(lambda process: process.created_by). Next(this.end) ) end = flow.End() ``` 这段代码展示了从创建一个新的审批请求到最后结束整个流程的过程,期间包含了条件判断分支(如批准与否),并且允许指定特定的操作人员执行某些动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值