Django的数据获取、FBV&CBV和模板语言2

一、Django提交表单的几种方式

1.get,post表单提交方式

           get:获取数据,用URL访问

           post:提交数据,提交数据给后台

2.files和post提交表单

用来上传文件,chunks可以限制大小。

   #get()与getlist()     
# v=request.POST.get('gender')
# print(v)
# f=request.POST.getlist('favor')
# print(f)
# v2=request.POST.get('city')
# print(v2)
# f2=request.POST.getlist('travel')
# print(f2)

# #上传文件时,fom表单中要添加enctype="multipart/form-data"
# name=request.POST.get('file')
# print(name)
obj=request.FILES.get('file')
#obj还有的属性 obj.name obj.size
print(obj,type(obj),obj.name)
import os
file_path=os.path.join('upload',obj.name)
f=open(file_path,mode='wb')
for i in obj.chunks():
    f.write(i)
f.close()

3.其他方法

'put', 'patch', 'delete', 'head', 'options', 'trace'

二、FBV与CBV

FBV(function)   与   CBV(class)
           1.function base view
                   在url.py中定义的是函数
                             index-->函数名
          view.py
                 def func(request):
                  ...
         2.CBV:
                  在url.py中定义的是类
                             index-->类

3.CBV的使用

3.1 在urls.py中的设置

注意事项:这里的as_view()是固定用法

from app01 import views
urlpatterns = [
    path('home/',views.Home.as_view())
]

3.2在views中的内容

from django.views import View
class Home(View):
    def dispatch(self, request, *args, **kwargs):
        # 调用父类中的dispatch,用于寻找类中是否有相应的方法
        # 用户请求,匹配URL,寻找urls中的处理方法,调用该父类函数查询是否有相应的方法,调用相应方法
        print('before')
        result=super(Home, self).dispatch(request, *args, **kwargs)
        print('after')
        return result
    def get(self,request):
        print(request.method)
        return render(request,'home.html')
    def post(self,request):
        print(request.method)
        return render(request,'home.html')

三、模板语言

1.循环和条件语句


<html>
    <body>
        <div>{{user}}</div>
          <ul> {% for row in user_list %}
                <li>{{row.0}}</li>      <!-- 列表中 -->   
                <li>{{row.key1}}</li>   <!-- 字典中 -->
                <li>
                        {%if age%}
                            <a >有年龄</a>
                            {%if age >= 60%}
                                <a>老年人</a>
                            {%elif age == 50%}
                                <a>50岁的人</a>
                            {%else %}
                                <a>其他人</a>
                            {%endif%}
                        {%else%}
                            <a >没有年龄</a>
                        {%endif%}
                </li>
                {% endfor %}
          </ul>
          <div>
          </div>
    </body>
</html>

2.字典在模板语言中的循环

<ul>
    {% for key in user_dict.keys %}
        <li>{{ key }}</li>
    {% endfor %}
</ul>
<ul>
    {% for value in user_dict.values %}
        <li>{{ value.name }}</li>
    {% endfor %}
</ul>
<ul>
    {% for k,v in user_dict.items %}
        <li>{{ k }}---{{ v }}</li>
    {% endfor %}
</ul>

 3.循环的其他信息

forlook.counter      #计数,从1开始计数
forloop.counter0     #由小到大计数,从0开始
forloop.first        #是否为第一个元素,输出TRue/False
forloop.last         #是否为最后一个元素,输出TRue/False
forloop.parentloop   #嵌套子循环时,输出父循环次数,由1开始
forloop.revcounter   #由大到小计数,从1开始
forloop.revcounter0  #由大到小计数,从0开始

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

theskylife

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值