Django框架

【框架结构及作用】


【开展项目】

生成一个app模块

#PyCharm命令行
PS D:项目路径> python ./manage.py startapp 模块名称(比如app01)

在运行、编写app部分之前 要将app部分注册进配置文件中 确保app已注册

编写URL和试图函数对应关系

编写视图函数

也可以用render返回html文件格式

  • 启动项目:
# PyCharm命令行
PS 项目路径> python .\manage.py runserver

        或者用PyCharm的绿色启动箭头开启

        输入对应URL 得到返回的视图

  • templates模块:

        存放用于返回的HTML模板

  • 静态文件:

        在开发过程中 一般将图片、CSS、JS都处理成静态文件 必须存放在APP下的static文件夹下

         以上方法不推荐使用

    可以使用django的方法 这样以后在修改静态文件位置时 只需要修改配置文件中的STATIC_URL

  • 在html中使用传入变量:

        在views方法中以字典的格式传入变量

         在html文件中用{{key}}的形式来使用

  • 关于列表类型的变量使用:

        同上述一样传入参数

        可以使用{{ name.id }}的方式获取相应下标的值 也可以用循环遍历的方式

  • 关于字典类型的变量使用:

        可以使用{{ name.key }}的方式获取相应键的值 也可以使用循环方式 循环方式有:

{% for k,v in name.items %}        //获取键和值

{% for item in name.keys %}        //只获取键

{% for item in name.values %}      //只获取值

  • 请求与响应:

  •  Django安全机制 Forbidden错误:

        需要在form表单里面加入 {% csrf_token %}

        相当于Django提供的校验令牌

  • HTML模板的继承

        编写一个HTML模板 写入{% block content %}{% endblock %}占位符

        只需要在其他HTML中写入block内部的内容即可       

  • Django的连表操作:

  • 在后台get传参时加入特定值

        首先将原get深拷贝一份 再将_mutable设置为True 即可在深拷贝中写入参数

 

  • 关闭项目服务:

        在PyCharm命令行下 按住Ctrl+C

        或者找到项目服务的进程id

        输入kill 对应id


【Django组件 -- Form与ModelForm】

        Form与ModelForm都是Django给提供的方便前端表单提交的组件

===========[Form]===========

        首先要在views.py中定义form属性

# views.py
from django import forms
class MyForm(forms.Form):
    name=forms.CharField(widget=Input)
    age=forms.IntField(widget=Input)
    xxx=forms.方法名(属性名1=值1,属性名2=值2...)

        在对应方法中将MyForm类实例化后的变量传入前端

# views.py
def func_name(request):
    form=MyForm()
    return render(request,'xxx.html',{'form':form})

        在全端页面的表单中只需要引入属性名Django就会自动的生成相应的HTML代码 (注1)

<!-- 前端HTML -->
<form method='post' action='xxx'>
    {{form.name}}
    {{form.age}}
</from>

        或者在前端中循环form Django也会自动生成相应HTML代码 (注2)

<!-- 前端HTML -->
<form method='post' action='xxx'>
    {% for field in form %}
        {{ field }}
    {% endfor %}
</form>

         注1 与 注2的效果相同

========[ModelForm]========

        ModelForm同样需要在views.py中声明

# views.py
from django import forms
from APP模块名 import models
class MyModelForm(forms.ModelForm):
    xx=form.CharField(...)                # ModelForm同样可以自定义字段
    class Meta:
        model= models.py中已经定义的类名
        fields=['属性名1','属性名2'...]    # 需要在前端输入的类的属性名

详见:Form与ModelForm


【Django数据库操作 ORM】

Django内部提供了orm框架 方便我们对数据库中的表以及其中的数据进行操作

  • 安装第三方模块    
pip install mysqlclient
  • 手动创建数据库

orm框架只能对数据库中的表进行操作 而无法对数据库进行操作 所以就需要手动创建数据库

CREATE DATABASE `数据库名称` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


======== Django操作数据库中的表========

 在settings.py文件中进行配置和修改

  • 创建表

在models.py文件中写入相关的类:

from django.db import models

# Create your models here.

class UserInfo(models.Model):        # 规定类必须继承models
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()

"""
当Django读入这个类时 会自动将该类翻译为创建一个表的SQL语句:
create table app01_userinfo(
    id bigint auto_increment primary key,
    name varchar(32),
    password varchar(64),
    age int
)
"""

在类写入完毕后 在终端执行  (app必须提前注册 否则不会提交)

PS 项目路径>python manage.py makemigrations
PS 项目路径>python manage.py migrate

设置外键

 数据约束

  • 操作表或数据

在表中新增字段时,由于已存在列中可能已有数据,所以新增列必须指定新增列对应的数据:

                1.手动输入一个值

                2.设置默认值

                        字段名称 = models.字段类型方法(default=默认值)

                3.允许为空

                        字段名称 = models.字段类型方法(null=True,blank=True)

新增数据:

        类名.objects.create(字段1=值,字段2=值, ... ...)

 删除数据:

        根据filter()筛选出来的数据删除:

        类名.objects.筛选方法名(参数).delete()

                比如        UserInfo.objects.filter(id=3).delete()

        删除全部数据:

        类名.objects.all().delete()

获取数据:

        类名.objects.筛选方法名(参数)

                比如        UserInfo.objects.all()        UserInfo.objects.filter(id=1)

        数据的返回类型为 data_list=[对象1,对象2, ... ...]

         若只想取一条数据 则可以:类名.objects.筛选方法名(参数).first()

                比如         UserInfo.objects.filter(name='aaa').first()

        或者可以在筛选后加上 [start:end]来控制得到的区间:

        数据的返回类型为一个封装好的对象 不再需要遍历

        筛选常用条件:

        当条件较多时 可以将条件写成字典形式的变量 然后用filter(**data) 来筛选

        也可以使用order_by(key)的方式来进行根据key的排序

修改数据:

        类名.objects.筛选方法名(参数).update(字段名=值)

                比如        UserInfo.objects.filter(name='aaa').update(name='aaa01')

  • 删除表或字段

将相关的类或字段注释掉后 再次执行命令即可

PS 项目路径>python manage.py makemigrations
PS 项目路径>python manage.py migrate
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值