Django学习系列之模板】的更多相关文章

一.模板标签 if/else {%  if  %}标签检查一个变量的值是否为真或者等于另外一个值,如果为真,系统会执行{%  if  %}和{%  endif  %}之间的代码块,例如: {% if today_is_weekend %} <p>Welcome to the weekend!</p> {% endif %} {%  else  %}标签是可选的,如果不为真则执行{%  else  %}和{%  endif  %}之间的代码块 注意:一定要用{%  endif  %}…
什么是django模板 模板是一个文本,用于分离文档的表现形式和内容,模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签) 模板通常用于产生HTML 如何使用模板 创建一个Template对象 传入一套变量context,调用render方法,它将返回一个基于模板的展现字符串,模板中的变量和标签会被context值替换 F:\Python\PyCharm\Project\cmdb>python manage.py shell Python 3.5.2 (v3.5.2:4de…
 Django学习系列之Form基础 2015-05-15 07:14:57 标签:form django 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://5ydycm.blog.51cto.com/115934/1651453 Form对与一个网站来说就是一个灵魂,今天我们就来说说Django的Form概述. 本文内容来自官网,互联网及自己实验所得. 表单(forms.py)的定义: #coding:utf-8from dj…
之前写的lists/tests.py中的单元测试,要查找特定的HTML字符串,但这不是测试HTML的高效方法. 单元测试规则之一“不测试常量”,编写断言检测HTML字符串中是否有制定的字符串序列,不是单元测试应该做的. 单元测试要测试的其实时逻辑,流程控制和配置. Python代码中插入原始字符串不是处理HTML的正确方式,我们有更好的方式,就是使用模板.把HTML放在一个扩展名为.html的文件中. 让视图函数返回一样的HTML,但使用不同的处理方式,这个过程叫重构,即在功能不变的前提下改进代…
学习系列5中的单元测试有报错信息,这儿来编写functional_tests.py文件,扩充其中的功能测试 # File: functional_test.py # Author: Rxf # Created on 2019.10.10 14:00 (first release) # Copyright (C) 2019 xxxxxx. All rights reserved. # please use python3.x # -*- coding: UTF-8 -*- from seleniu…
模板 模板介绍 在之前的章节中,视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式的HTML代码,这可以让浏览器渲染出非常漂亮的页面. 目前市面上有非常多的模板系统,其中最知名最好用的就是DTL和Jinja2.DTL是Django Template Language三个单词的缩写,也就是Django自带的模板语言.当然也可以配置Django支持Jinja2等其他模板引擎,但是作为Django内置的模板语言,和Django可以达到无缝衔接而不会产生一些不兼容的…
要获取用户输入的待办事项,发送给服务器,这样才能使用某种方式保存待办事项,然后在显示给用户查看. 上次运行测试指出无法保存用户的输入.现在,要使用HTML post请求. 若想让浏览器发送POST请求,要给<input>元素指定name=属性,然后把他放在<form>标签中,并为<form>标签指定method=POST属性,这样浏览器才能向服务器发送POST请求. 调整一下lists/templates/home.html中的模板 <html> <h…
前面提到的问题中在表格中显示多个待办事项 是最后一个容易解决的问题.要编写一个新单元测试,检查模板是否也能显示多个待办事项: lists/tests.py def test_displays_all_list_items(self): Item.objects.create(text='itemey 1') Item.objects.create(text='itemey 2') response = self.client.get('/') self.assertIn('itemey 1',…
从视图的Python代码中把变量传入HTML模板. 模板中使用哪种句法引入Python对象,要使用的符号{{...}},它会以字符串的形式显示对象: <html> <head> <title>To-Do lists</title> </head>> <body> <h1>Your To-Do list</h1> <form method="POST"> <input…
python 和 php 我都是使用过,这里不想做一个非常理性的分析,只是根据自己的经验谈一下感想. 在web开发方面,无疑 php 更甚一筹. 从某种角度来说,php 就是专门为 web 定制的语言. 他没有强制的变量类型,文件结构也很松散, 不需要再代码中手动导入各种类库,开发非常快速方便,稳定性也非常好. python 则不然, 它需要手动定义很多参数, 大多数时候,需要一个类似 uwsgi 的 中间服务器 和 nginx,apache等更专业的web服务器通讯.虽然 uwsgi 也可以作…
Variables 在模板中,使用两个大括号包含变量的方式来使用变量: {{ name }} 该变量应该作为键值对中的键,在Context中能被查找到. Tags 模板中使用Tags来进行简单的逻辑: {% commet %}    #body{% endcommet %} Django内置了大量的Tags: 1. if :使用if标签来实现分支逻辑 {%if option%}    #if body{%elif option2%}     #elif body{%else%}     #els…
通过Django中的模板,使得设计人员和网站管理有一个对接的接口,实现网页设计和逻辑的分离,因此,模板会处理大量的文本解析内容,django中内部使用了高效的引擎来完成模板解析. 模板设置 在使用模板前,需要对django进行配置,在项目目录的setting.py中, TEMPLATES = [    {        'BACKEND': 'django.template.backends.django.DjangoTemplates',        'DIRS': [           …
- django模板: templates - 模板分为两个过程: 1, 加载 : loader.get_template('xxx.html') 返回值是一个template对象 2, 渲染 : template.render(context) 因为上诉过程过于麻烦,所以Django自己封装一个简单的方法: return render(request,'xxx.html',context={}) - 过滤器: {{变量名|过滤器}} - 增减:add {{对象.属性 | add : 5 }}…
一.首先我们用PyCharm来创建一个Django项目 终端命令:django-admin startproject sitename 图形创建:   这样一个Django项目就创建完成了,上面可以看到项目的一个结构 接下来创建一个APP     二.创建APP 进入到项目所在目录执行命令   C:\Users\yangmingwei\PycharmProjects\yangmv> python manage.py startapp web   上图可以看到APP的一个结构   常用命令: py…
模板语言if/else/endif {% if today_is_weekend %} <p>Welcome to the weekend!</p> {% else %} <p>Get back to work.</p> {% endif %} 解释:当变量:today_is_weekend 为真,返回:<p>Welcome to the weekend!</p> ,否则返回:<p>Get back to work.<…
项目树 引入xadmin pycharm在项目中创建存放xadmin的目录 右键项目名称-->pythonpackage-->输入名称:extra_app 拷贝xadmin代码到extra_app (mxonline) zhaijunming@zhaijuningdeMBP:~/Desktop/Project/python$ git clone https://github.com/zaxlct/imooc-django.git (mxonline) zhaijunming@zhaijunin…
Cookie和Session介绍 cookie 保存在客户端 session 保存在服务端 session依赖于cookie,比如服务端想往客户端写东西的时候就把cookie写到客户端浏览器 django自带的session库有以下几点选择 a)database-backed session 存数据库 b)cached sessions              存缓存 c)use file-based sessions    存文件 d)cookie-based sessions     存c…
Django CSRF 什么是CSRF CSRF, Cross Site Request Forgery, 跨站点伪造请求.举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果 某个用户已经登录到你的网站上了,那么当这个用户点击这个恶意网站上的那个链接时,就会向你的网站发来一个请求, 你的网站会以为这个请求是用户自己发来的,其实呢,这个请求是那个恶意网站伪造的 Django提供的CSRF防护机制 django 第一次响应来自某个客户端的请求时,会在服务器端随机生成一个 token,把这个 t…
一.基于App的路由 作用: 根据App对路由规则进行分类,在全局urls.py包含某个项目的urls.py 示例 定义全局urls.py(全局路由系统) #导入include from django.conf.urls import url,include from django.contrib import admin #导入app下的view函数 from learn import views urlpatterns = [ url(r'^admin/', admin.site.urls)…
Django生成一个很有帮助的错误信息,大意是说没有正确设置数据库. 你可能会有疑惑,为什么在单元测试一切都运行ok,这是因为Django为单元测试创建了专用的测试数据库——这是Django中Testcase所做的神奇事情之一. 为了设置好真正的数据库,要创建一个数据库,SQlite数据库只是硬盘中的一个文件,在Django的setting.py文件中发现,默认情况下,Django把数据库保存为db.sqlite3,放在项目的基目录中 我们在Models.py文件和后来创建的迁移文件中告诉Dja…
处理完POST请求后重定向 代码中new_item_text = ''的写法不怎么样.解决第二个问题时候,顺带把这个问题也解决了. 人们都说处理完post请求后一定要重定向,接下来就实现这个功能吧.修改针对保存POST请求数据的单元测试,不让它渲染包含待办事项的响应,而是重定向到首页. lists/tests.py def test_can_save_a_post_request(self): response = self.client.post('/', data={'item_text':…
ORM—对象关系映射器,是一个数据抽象层,描述存储在数据库中的表,行和列.处理数据库时,可以使用熟悉的面向对象方式,写出更好的代码. 在ORM的概念中,类对应数据库中的表,属性对应列,类的单个实例表示数据库中的一行数据. Django对ORM提供了良好的支持,学习ORM的绝佳方法是单元测试中使用她,因为单元测试能按照指定方式使用ORM. 在tests.py中新建一个类 class ItemModelTest(TestCase): def test_saving_and_retrieving_it…
之前的代码还没有为表单指定action=属性,因此提交表单默认返回之前渲染的页面,即“/”,这个由视图函数home_page处理.下面修改这个视图函数,让它能处理POST请求. 这意味着要为视图函数home_page编写一个新的单元测试,打开文件 lists/tests.py 在HomePageTest类中添加一个新方法,在其中添加post请求,在检查返回的HTML中是否有新添加的待办事项文本. """向浏览器返回真正的HTML响应,添加一个新的测试方法""…
"""向浏览器返回真正的HTML响应,添加一个新的测试方法""" from django.test import TestCase from django.urls import resolve from django.http import HttpRequest from django.template.loader import render_to_string from lists.views import home_page class…
打开lists/tests.py编写 """向浏览器返回真正的HTML响应,添加一个新的测试方法""" from django.test import TestCase from django.urls import resolve from django.http import HttpRequest from lists.views import home_page class HomePageTest(TestCase): def test…
1.前言 假设一个公司A有一个网站B,且网站B有5个不同的页面分别为C1,C2,C3,C4,C5. 那么,我们在打开这5个不同页面后去查看页面的整体内容,会发现每个页面的顶部内容.底部内容都一模一样.所以我们可以尝试把这些每个页面都拥有的相同的内容单独抽离出来放在另外的html页面进行维护.类似于python语言里面的函数概念,比如函数D1和函数D2的内部都会使用一部分有相同代码逻辑的代码块,我们把这一部分有相同代码逻辑的代码块写成函数D,然后函数D被函数D1和函数D2调用,这样就能实现代码的高…
安装Django > pip install django==1.10.3(py2)或者>python3 -m pip install django==1.10.3(py3) 成功安装 Django之后,在.../Python36/Scripts/目录中将会多出一个django-admin.exe 文件 Windows 命令提示符下输入“django-admin”命令回车 这里罗列了 Django 所提供给我们的命令,其中我们可以使用“startproject”命令来创建项目 创建项目: 我们…
1.创建你个人的项目与APP 2.填写你的数据库名称与数据库类型,这里使用内置的sqllite3 3.修改setting文件 a.将'django.contrib.admin'加入setting的INSTALLED_APPS配置中 (INSTALLED_APPS中的配置顺序是没有关系的, 但是我们喜欢保持一定顺序以方便人来阅读) b.保证INSTALLED_APPS中包含'django.contrib.auth','django.contrib.contenttypes'和'django.con…
先来一个简单的实例 urls.py from django.conf.urls import url from django.contrib import admin from cmdb import views urlpatterns = [ url(r'^login/', views.index), ] views.py from django.shortcuts import render from django.views.generic import View # Create you…
安装部署 安装captcha pip3. install django-simple-captcha== settings.py中引入captcha INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfi…