Django教程(四)- Django模板及进阶

Django模板及进阶 代码操作:

  • home.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模板实例</title>
</head>
<body>
    <!--1.显示一个基本的字符串在网页上-->
    <!--{{ string }}-->

    <!--2.基本的 for 循环 和 List内容的显示-->
    <!--{% for i in list %}-->
    <!--{{ i }}-->
    <!--{% endfor %}-->

    <!--3.显示字典中内容-->
    <!--{% for key,value in dict.items %}-->
    <!--{{ key }}:{{ value }}-->
    <!--{% endfor %}-->

    <!--4.在模板进行 条件判断和 for 循环的详细操作:-->
    <!--{% for i in list %}-->
    <!--{{ i }}{% if not forloop.last %},{% endif %}-->
    <!--{% endfor %}-->

    <!--#5.模板上得到视图对应的网址:-->
    <!--<a href="{% url 'h' 4 5 %}" >友情链接</a>-->

    <!--6.模板中的逻辑操作:-->
    <!--{% if var >= 90 %}-->
    <!--成绩优秀-->
    <!--{% elif var >= 80 %}-->
    <!--成绩良好-->
    <!--{% elif var >= 70 %}-->
    <!--成绩一般-->
    <!--{% elif var >= 60 %}-->
    <!--需要努力-->
    <!--{% else %}-->
    <!--不及格-->
    <!--{% endif %}-->

    <!--7.模板中 获取当前网址,当前用户等:-->
    <!--{{ request.user }}-->

    <!--8.过滤器-->
    {{ var|lower }}



</body>
</html>
  • views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render,redirect
from temforms import temform
from django.http import HttpResponse

# Create your views here.
# 简单的模板
# def test(request):
#     return render(request,'new.html',)

# 1.显示一个基本的字符串在网页上
# def home(request):
#     string =u'遇见你真是三生有幸❤'
#     return render(request,'home.html',{'string':string})

# 2.基本的 for 循环 和 List内容的显示
# def home(request):
#     list =['L','o','v','e','x','l']
#     return render(request,'home.html',{'list':list})

# 3.显示字典中内容
# def home(request):
#     dict={'name':'中二病控','age':'22','interset':'write'}
#     return render(request,'home.html',{'dict':dict})

# 4.在模板进行 条件判断和 for 循环的详细操作:
# def home(request):
#     list = map(str,range(20))# 一个长度为10的 List,对range(20)各项进行str操作
#     return render(request,'home.html',{'list':list})

#5.模板上得到视图对应的网址:
def add(request,a,b):
    c= int(a)+int(b)
    return HttpResponse(str(c))


#6.模板中的逻辑操作:
# def home(request):
#     return render(request, 'home.html', {'var': 20})

# 7.模板中 获取当前网址,当前用户等:
def home(request):
     return render(request, 'home.html', )
# 8.过滤器
def home(request):
     return render(request, 'home.html', {'var': 'LOVER'})
  • urls.py
from django.conf.urls import include, url
from django.contrib import admin
from . import views

urlpatterns = [
     # url(r'^test/',views.test,),
    url(r'^home/',views.home,),
    url(r'^add/(\d+)/(\d+)/$',views.add,name='h')

]

需求:编写注册提交,“密码”与“确认密码”不一致,显示密码不一样。成功后在另一个页面显示 代码操作:

文件树形图显示

  • ofForm.py
# -*- coding:utf-8 -*-
from django.forms import Form,widgets,fields
from django import forms

class ofForm(Form):
    userName = fields.CharField(max_length=10)
    password = fields.CharField(max_length=10,widget=widgets.PasswordInput)
    repassword = fields.CharField(max_length=10,widget=widgets.PasswordInput)

    def clean(self):
        password = self.cleaned_data['password']
        repassword = self.cleaned_data['repassword']
        if not password == repassword:
            print 'error'
            myerror = 'password is different from repassword,please write again!'
            raise forms.ValidationError(myerror)

        return self.cleaned_data
  • index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<form action="" method="post">
    {% csrf_token %}
    用户名:{{ form.userName }}<br>
    密码:{{ form.password }}<br>
    确认密码:{{ form.repassword }}{{form.non_field_errors}}<br>

    <input type="submit" value="注册">


</form>

</body>
</html>
  • urls.py
from django.conf.urls import url
from django.contrib import admin
from . import views

urlpatterns = [
    url(r'^reg/$',views.register)

]
  • views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render
from django.http import HttpResponse
from ofForms import ofForm
from models import UserModel


# Create your views here.
def register(request):
    if request.method == 'GET':
        form =ofForm.ofForm()
        return render(request,'index.html',{'form':form})
    elif request.method == 'POST':
        form = ofForm.ofForm(request.POST)
        if form.is_valid():
            userModel = UserModel()
            userModel.userName = form.cleaned_data['userName']
            userModel.password = form.cleaned_data['password']
            userModel.save()

            return HttpResponse('数据提交成功!')
        else:
            return render(request,'index.html',{'form':form})
  • models.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

# Create your models here.
class UserModel(models.Model):
    userName = models.CharField(max_length=10)
    password = models.CharField(max_length=10)

效果展示:

首页

两次密码一致

两次密码不一致

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小李刀刀的专栏

[译]Laravel 5.0 之自定义错误页面

本文译自 Matt Stauffer 的系列文章. ---- 在以往版本的 Laravel 中,假如你想自定义错误页面——比如当用户访问不存在的页面时显示一张猫...

3895
来自专栏ytkah

Laravel展示产品-CRUD之show

  上一篇讲了Laravel创建产品-CRUD之Create and Store,现在我们来做产品展示模块,用到是show,①首先我们先修改controller...

833
来自专栏calvin

解决linux netcore https请求使用自签名证书忽略安全检查方法

当前系统环境:centos7 x64. dotnet 2.0. 不管是 ServicePointManager.ServerCertificateValid...

1792
来自专栏玩转JavaEE

Redis之AOF持久化

上篇文章和小伙伴们聊了使用快照的方式实现redis数据的持久化,这只是持久化的一种方式,本文我们就来看看另一种持久化方式,AOF(append-only fil...

970
来自专栏IT笔记

Terminate ZkClient event thread.

因为以前本地测试一直没有报错zookeeper 也没用动过,190测试服务器也一直没问题,所以一直不会以为是版本的问题。

5964
来自专栏Bug生活2048

.net core下访问控制层的实现

对于一般的程序而言,如果在未登录的情况下理应是没有对应的权限访问对应的页面的,同时,不同的用户也需要验证该用户权限是否满足条件。

942
来自专栏码农阿宇

.Net Core从命令行读取配置文件

最近在学习博客园腾飞(jesse)的.Net Core视频教程,收益匪浅,在此作推荐 : http://video.jessetalk.cn/ 言归正传,.Ne...

3104
来自专栏.NET技术

.net core实践系列之SSO-同域实现

SSO的系列还是以.Net Core作为实践例子与大家分享,SSO在Web方面复杂度分同域与跨域。本篇先分享同域的设计与实现,跨域将在下篇与大家分享。

4462
来自专栏IT笔记

Unable to connect to zookeeper server within timeout: 5000

本地项目远程连接190的zookeeper报错,提示无法连接。 查看一下防火墙,2181端口也加入了,关闭防火墙还是不行。 因为以前本地测试一直没有报错zo...

5617
来自专栏性能与架构

Redis持久化机制

Redis持久化方式有两种: (1)RDB 对内存中数据库状态进行快照 (2)AOF 把每条写命令都写入文件,类似mysql的binlog日志 RDB 将Red...

3396

扫码关注云+社区

领取腾讯云代金券