七日Python之路--第十一天
(一)关于模板,Template
可以在项目根目录下的settings.py 配置文件中,声明
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = os.path.join(BASE_DIR, 'templates')
这样模板的默认搜索就是在根目录的'templates'文件下进行寻找。
但是,感觉还是不声明,直接使用默认的搜索路径比较好。当不进行声明时,默认搜索路径是相应的app应用目录下的‘templates’文件夹下。
(二)关于默认DEBUG模式,及出错界面
是否启用Debug模式,可以这样来判断
import socket
if socket.gethostname() == 'xxx-pc':
DEBUG = True
else:
DEBUG = False
当启用DEBUG模式时,出错界面采用系统自带的。当关闭DEBUG模式时,会在模板根目录下搜寻出错页。因此可在‘templates’下定义404.html,500.html等自定义出错页。
还有就是。当DEBUG模式关闭时,需要设置
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
(三)关于静态文件,css,js etc.
Django1.6 创建默认在settings.py 中
STATIC_URL = '/static/'
这样只需要在相应的app下面新建‘static’文件夹即可。
静态文件在html文件中的引用,可以使用
{% load staticfiles %}
{% static 'boostrap.css' %} <!-- 这样就能引用静态文件了 -->
(四)关于表单form的csrf
需要在views.py 文件中这样处理
from django.core.context_processors import csrf
def register(req):
if req.method == 'POST':
form = UserForm(req.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = User(username=username, password=password)
user.save()
return HttpResponseRedirect('/blog/login/')
else:
form = UserForm()
context = {'form':form}
context.update(csrf(req))
return render_to_response('register.html',context)
<form method='post'>{% csrf_token %}
{{form.as_p}}
<input type='submit'>
</form>
这样处理request的返回context即可。
(五)关于form表单的创建
可以使用 forms.Form 或 forms.ModelForm
#coding=utf-8
from django import forms
from models import Comment
# class CommentForm(forms.Form):
# name = forms.CharField(max_length=20, label=u'昵称', error_messages={'required': '请输入姓名'})
# address = forms.CharField(max_length=20, label=u'地址', required=False)
# email = forms.EmailField(label=u'邮件', required=False)
# context = forms.CharField(label=u'评论', widget=forms.Textarea)
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['name', 'address', 'email', 'context']
labels = {
'name': u'昵称',
'address': u'地址',
'email': u'邮件',
'context': u'评论',
}
widgets = {
# 'context': forms.Textarea(attrs={'cols': 80, 'rows': 20})
'context': forms.Textarea,
# 'article': forms.HiddenInput,
}
error_messages = {
'name': {
'required': u'请输入姓名'
}
}
help_texts = {
}
ok,先这样。
--2014年08月08日22:00:25
(六)关于过滤器
{{ name|lower }}
{{ pub_date|date:"F j, Y" }}
具体用法,还有待研究!!!
唉,现在回想那天的文章。不免感觉自己还是太闷了。只是一味的低沉,人生更多的是需要积极与乐观,不虚度年华。今天早点睡觉吧。熬夜是对自己身体的不负责任! -- 2014年08月08日23:35:24
- [OIDC in Action] 1. 基于OIDC(OpenID Connect)的SSO
- [OIDC in Action] 2. 基于OIDC(OpenID Connect)的SSO(纯JS客户端)
- [认证授权] 2.OAuth2授权(续) & JWT(JSON Web Token)
- [Cake] 0.C#Make自动化构建-简介
- [认证授权] 3.基于OAuth2的认证(译)
- [Asp.Net Core] 1. IIS中的 Asp.Net Core 和 dotnet watch
- kafka数据迁移实践
- HDFS 2.x 磁盘间数据均衡的一种可行办法
- Batik渲染png图片异常的bug修复全程记录
- Web应用服务器安全:攻击、防护与检测
- 基于Go Packet实现网络数据包的捕获与分析
- 动态追踪技术(四):基于 Linux bcc/BPF 实现 Go 程序动态追踪
- Hive 时间转换函数使用心得
- Flume-Hbase-Sink针对不同版本flume与HBase的适配研究与经验总结
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- matlab 单元数组和元胞数组
- matlab串联结构体,按属性创建含有元胞数组的结构体
- 一起来学matlab-matlab学习笔记6 性能剖析
- 一起来学matlab-matlab学习笔记5 低级文件输入输出函数
- 一起来学matlab-matlab学习笔记4 数据导入和导出_3 导入和导出电子数据表
- 数据导入和导出_1 MAT文件的保存和读取
- 论文研读-基于决策变量分析的大规模多目标进化算法
- 用python画 pareto front
- 一起来学演化计算-matlab基本数据结构struct
- 一起来学演化计算-matlab基本函数inf, isempty, round, floor, fix
- 一起来学演化计算-matlab基本函数randperm end数组索引
- 论文研读-基于决策变量聚类的大规模多目标优化进化算法
- 一起来学演化计算-matlab基本函数min
- 一起来学演化计算-matlab基本函数find
- 欧拉图和哈密顿图