Django开发入门详解

Django开发入门详解

1.Django概述

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。

Django 框架的核心组件有:

  • 用于创建模型的对象关系映射;
  • 为最终用户设计较好的管理界面;
  • URL 设计;
  • 设计者友好的模板语言;
  • 缓存系统。

图片

Django已经成为web开发者的首选框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV 的设计模式。

MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图 。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:
在这里插入图片描述

2.Django项目环境搭建

搭建Django开发环境

  • 创建Django项目 也可以pycharm创建

    >>>django-admin  startproject  项目名
    
  • 创建APP

    >>>cd 项目目录
    >>>python manange.py startapp app名称
    
  • 注册app

    - 不注册,models.py生成数据库表行为不执行。
    - 不注册,模板文件、静态文件,不回去app目录下找。
    

    在这里插入图片描述

  • static目录,静态文件目录

  • templates目录,模板文件目录(HTML)

  • 表结构设计 app01/modes.py下执行

    from django.db import models
    
    class UserInfo(models.Model):
        v1 = models.CharField(max_length=32)
        ...
        ..
    
    >>>python manage.py makemigrations
    >>>python manage.py migrate
    
  • urls.py 中编写路由。

    from django.urls import path,re_path
    from app01 import admin
    
    
    urlpatterns = [
        path('admin/list/', admin.admin_list),
        path('admin/<int:nid>/delete/', admin.admin_delete),
        re_path('admin/(?P<nid>\d+)/delete/', admin.admin_delete)
    ]
    
  • 视图函数

    def admin_list(request):
        k1 = request.POST.get("k1")
        
        ... 业务处理
        
        return 数据
    
    - 默认参数request,包含请求相关的所有数据。
    	request.method
        request.GET
        request.POST
        request.FILES,上传文件。
        request.path_info,获取当前请求的URL
        	http://127.0.0.1:8000/depart/add/  ->    /depart/add/
                    
    - 返回值
    	return HttpResponse("字符串")
    	return JSONResponse( {"status":123,"data":[456,55,66,22,]} )
    		return JSONResponse( [11,22,33,44] ,safe=False)
    	return render(request,"xxx.html",{})
    	return redirect("http://127.0.0.1:8000/depart/add/")
    			return redirect("/depart/add/")
    
  • 数据库的ORM操作

    # 增加
    models..objects.create(name="武沛齐",age=19)
    models..objects.create(**{"name":"武沛齐","age":19})
    
    obj = models.(name="武沛齐",age=19)
    obj.save()
    
    obj_list = [
        models.(name="武沛齐",age=19),
        models.(name="武沛齐",age=19),
        models.(name="武沛齐",age=19),
        models.(name="武沛齐",age=19),
        models.(name="武沛齐",age=19)
        。。。
    ]
    models..objects.bulk_create(obj_list,batch_size=10)
    
    # 查询
    queyrset = models..objects.filter(name="武沛齐",age=19)         # [obj,obj,]
    queyrset = models..objects.filter(**{"name":"武沛齐","age":19}) # []
    obj = models..objects.filter(name="武沛齐",age=19).first()      # obj / None
    
    queyrset = models..objects.filter(age=19)
    queyrset = models..objects.filter(age__gt=19)
    queyrset = models..objects.filter(age__gte=19)
    queyrset = models..objects.filter(age__lt=19)
    queyrset = models..objects.filter(age__lte=19)
    queyrset = models..objects.filter(age__gt=19, name="武沛齐")
    queyrset = models..objects.filter(name__contains="中国")
    queyrset = models..objects.exclude(id=9)  # id !=9
    
    queyrset = models..objects.filter(age=19).order_by("id")
    queyrset = models..objects.filter(age=19).order_by("-id")
    queyrset = models..objects.filter(age=19).order_by("-id","name")
    
    queyrset = models..objects.filter(age=19)[0:10]
    
    # 更新
    queyrset = models..objects.filter(id=2).update(age=19,name="武沛齐")
    queyrset = models..objects.filter(id=2).update(**{"name":"武沛齐","age":19})
    
    
    obj = models..objects.filter(id=2).first()
    obj.name = "武沛齐"
    obj.age = 19
    obj.save()
    
    # 删除
    models..objects.filter(id=2).delete()
    
    整理的所有ORM操作:
    	https://www.cnblogs.com/wupeiqi/articles/6216618.html
    
  • Form和ModelForm组件

    - 自动生成HTML标签
    - 对用户请求的数据进行校验
    	- 自动保存到数据库(ModelForm)
    - 错误信息
    
    from django import forms
    
    class UserForm(forms.Form):
        xx = forms.CharField(...)
        
        
    class UserModelForm(forms.ModelForm):
        class Meta:
            model = models.类
            fields = "__all__"    
    
    form = UserModelForm(data=request.POST,instance=对象)
    if form.is_valid():
        form.cleaned_data
    else:
        form.errors
    
  • 关于POST提交CSRF认证

    <form method='post'>
        {% csrf_token %}
        ...
    </form>
    

    如果想要免除csrf认证。

    from django.views.decorators.csrf import csrf_exempt
    
    @csrf_exempt
    def order_add(request):
        pass
    
  • Cookie和Session

    cookie,本质上保存在浏览器端的键值对。 
    session,保存服务器端(django是将session默认存储在数据库中)
    
    def order_add(request):
        request.session['xx'] = 123
        
    def logout(request):
    	request.session.clear()
    
  • 中间件

    - 类 process_request / process_response
    - 注册中间件类
        MIDDLEWARE = [
            'django.middleware.security.SecurityMiddleware',
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.middleware.common.CommonMiddleware',
            'django.middleware.csrf.CsrfViewMiddleware',
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.middleware.clickjacking.XFrameOptionsMiddleware',
            'app01.middleware.auth.AuthMiddleware',
        ]
    - django请求到达之后,自动会执行相应的方法。
    
    - process_request
    	- 没有返回值或返回None,继续向后执行。
    	- 返回redirect/render/HttpResponse/JsonReponse,拦截请求不再继续向后之后。
    
  • 图片验证码

    pip install pillow
    
    - 创建图片并在图片上写文字
    - 字体文件
    - 自定义模块 check_code
    
  • 分页组件

    开发时候会用。
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值