吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1006|回复: 5
收起左侧

[Python 转载] Django的MTV模式和模板01

[复制链接]
A913830 发表于 2021-11-13 20:26
本帖最后由 A913830 于 2021-11-14 10:10 编辑

Django网站开发的mtv模式: Model(模型), Template(模板)和View(视图)。它们看似与MVC设计模式不太一致,其实本质是相同的。但是Django的View和经典的View确实有非常大的不同。- Model:与经典MVC模式下的Model差不多。是数据模型并不是数据本身- Template:与经典MVC模式下的View一致。决定了用户界面的外观- Views:负责业务逻辑,并调用Model和Template。此外还有一个路由分发器Urls,将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template。Urls+Views合起来使用,与经典MVC下的Controller更像
创建 templates 目录并建立 login.html文件   
<form action="/login" method="post">
        <div>username:<input type="text" name="username" value="{{name}}"></div>
        <div>password:<input type="password" name="password" value="{{password}}"></div>
        <div><input type="submit" value="login"></div>      
</form>
修改模板文件的路径 [os.path.join(BASE_DIR, 'templates')]

def login(request):
    if request.method == 'GET':
        from django.template import loader
        t = loader.get_template('login.html')
        html = t.render({'name':'utility','password':'123'})
        return HttpResponse(html)


def login(request):
    if request.method == 'GET':
        return render(request,'login.html',{'name':'bulletin'})

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| A913830 发表于 2021-11-13 21:09
<p>{{s}}</p>
<p>{{lst}}</p>
<p>{{mydic}}</p>
<p>{{lst.0}}</p>
<p>{{mydic.name}}</p>

def test(request):
    s = 'hello world!'
    lst = ['A','B','C']
    mydic = {'name':'utility','gender':'male'}
    dic = {'s':s,'lst':lst,'mydic':mydic}
    return render(request,'test.html',dic)

 楼主| A913830 发表于 2021-11-14 09:48
本帖最后由 A913830 于 2021-11-15 14:31 编辑

<form action="login" method="post">
    <div>username:<input type="text" name="username" value="{{name}}"></div>
    <div>password<input type="password" name="password" value="{{password}}"></div>     
    <div><input type="submit" value="login"></div>
</form>



def login(request):   
    if request.method == 'GET':
       return render(request,'login.html',{'name':'bulletin'})
 楼主| A913830 发表于 2021-11-14 10:07
本帖最后由 A913830 于 2021-11-14 10:30 编辑
A913830 发表于 2021-11-13 21:09
{{s}}
{{lst}}
{{mydic}}

request.META['REMOTE_ADDR']


locals:the local scope 局部范围
def fx(a,b):
    c = 300
    print(locals())


fx(100,200)
{'a': 100, 'b': 200, 'c': 300}


def mytemp_view(request):
    s = 'utility'
    return render(request,'mytemp.html',locals())
 楼主| A913830 发表于 2021-11-14 13:55
<form action="./" method="post">
    <input type="text" name="x" value="{{x}}">
    <select id="" name="op">
        <option value="add">+</option>
        <option value="sub" {% if op == 'sub' %}selected{% endif %}>-</option>
    </select>
    <input type="text" name="y" value="{{y}}"> = <span>{{ret}}</span>
    <div><input type="submit" value="calc"></div>
</form>



def calc(request):
    if request.method == 'GET':
        return render(request,'calc.html',locals())
    elif request.method == 'POST':
        if request.POST['x'] == '':
            print('>>>>>>>>>')
        x = int(request.POST.get('x','10'))
        y = int(request.POST.get('y','20'))
        op = request.POST.get('op')
        if op == 'add':
            ret = x+y
        elif op == 'sub':
            ret = x-y

        return render(request,'calc.html',locals())


 楼主| A913830 发表于 2021-11-14 14:27
本帖最后由 A913830 于 2021-11-14 14:33 编辑

<div>
    <h2>s = {{s|upper}}</h2>
    <h2>s = {{s|safe}}</h2>
    <h2>n+2 = {{n|add:2}}</h2>

</div>


def filter_view(request):
    s = ' <i>hello world!</i> '
    n = 100
    return render(request,'filter.html',locals())
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 12:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表