http://www.cnblogs.com/zhxhdean/p/3173663.html
0.python-dev安装(ubuntu)
1.Open(filename,mode)
报错实例: f = open('d:\Users\168935495Request.xml','r')
错误信息"SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape"
解决方法: f = open(r'd:\Users\168935495Request.xml','r')
原因:文件名中的 \U 开始的字符被编译器认为是八进制
2.Module Path
python安装目录在C:\Python33,fibo.py文件在E:\Python。
报错实例:import fibo
错误信息“ImportError: No module named 'fibo'”
解决方法:import sys
sys.path.append('E:\Python')
import fibo
原因:需要在sys中配置工作目录
2.5 不同目录导入模块
错误信息“ImportError: No module named 'fibo'”
解决方法:在目录下新建空文件__init__.py
3.Python2.7中文不识别
错误信息“SyntaxError: Non-ASCII character '\xc9'”
解决方法:文件头#coding=gbk
4.mysqldb 模块安装(目前只支持python 2.7)
系统32位的从https://pypi.python.org/pypi/MySQL-python/1.2.4下然后直接安装
系统64位的从http://arquivos.victorjabur.com/python/modules/MySQL-python-1.2.3.win-amd64-py2.7.exe下然后直接安装
5.import MySQLdb
错误信息:this is MySQLdb version (1,2,4,'beta',4),but _mysql is version (1,2,3,'final‘,0)
解决方法:删除\Lib\site-packages下所有的mysqldb,重新安装
6.格式化
整型数:%d 无符号整型数:%u 八进制:%o 十六进制:%x %X 浮点数:%f科学记数法
字符串: %s 如果没有什么特殊需求完全可以全部使用’%s‘来标记
7.with用法
with conn:
conn.execute("insert into sometable values (?,?)",("foo","bar"))
在这个例子中,commit()是在所有with数据块中的语句执行完毕并且没有错误之后自动执行的,如果出现任何的异常,将执行rollback()操作,再次提示异常
8.文件每次修改后,需要重启服务
9.python连接MySQL连接串(注意编码)
python连接MySQL时加上编码参数 conn = MySQLdb.Connection(host='localhost', user='root', passwd='123', db='test',charset='utf8')
9.5Django配置MySql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #Mysql引擎
'NAME': 'meiwei', # 数据库名,不需要路径以及后缀的
'USER': 'root',#用户
'PASSWORD': '',#密码
'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '', # Set to empty string for default.
}
}
错误信息:Requested setting TEMPLATE_DEBUG, but settings are not configured. You must either define
解决方法:from django.conf import settings
settings.configure()
11.设置静态资源路径
settings.py
import os.path
TEMPLATE_DIRS = (
#静态模块文件存放路径
os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
)
使用处
from django.template.loader import get_template
t = get_template('shoplist.html')
12.model设置表名和主键自增(django 默认的表是项目名+类名,主键是id)
from django.db import models
class Shop(models.Model):
class Meta:
db_table='shops'#指定表名,忽略django自动映射的表名(项目_class)
ShopId = models.AutoField(primary_key=True,db_column='sid')#指定列名
13.Templates模块
需要和model对象的属性一致(大小写敏感)
14.Model中的__unicode__(self)
请确保你的每一个模型里都包含 __unicode__() 方法,这不只是为了交互时方便,也是因为 Django会在其他一些地方用 __unicode__() 来显示对象。
15.DateTimeField received a naive datetime (2013-08-19 18:44:32) while time zone support is active.
settings 修改 USE_TZ=False
参考:https://docs.djangoproject.com;http://www.djangobook.com
16.form自定义error,输出message
class ShopForm(forms.Form): def clean(self): cleaned_data =self.cleaned_data data_shopname = cleaned_data.get('shopname') if data_shopname is None: raise forms.ValidationError(u'商户名不能空') if len(data_shopname)>50: raise forms.ValidationError(u'商户名长度不能超过50') return cleaned_data form = ShopForm(request.POST,error_class=ErrList) message= form.errors['__all__'].__unicode__()
16.5使用Form验证表单数据 (表单中的name名称必须和form类中的名称一致)
#form.py class ShopPicForm(forms.Form): shopname = forms.CharField(label="商户名",error_messages={"required":u"商户不可空"}) picname = forms.CharField(label="图片名",help_text="长度范围2-20",max_length=20,min_length=2,error_messages={"required":u"图片名不可空","min_length":u"最小长度2","max_length":u"最大长度20"}) picup = forms.ImageField(label="选择图片",error_messages={"required":u"图片不可空"})
#view.py
form = ShopPicForm(request.POST) if form.is_valid(): #do something else: return render(request,"picadd.html",{"f":form})
#template 图片名:<input type="text" name="picname" value="{{f.data.picname}}"/> {{f.errors.picname.as_text}}<br/> 商户名:<input type="text" name ="shopname" autocomplete="on" value="{{f.data.shopname}}"/>{{f.errors.shopname.as_text}}<br/>
16.9修改errors键的值:
#.py from django.forms.util import ErrorList form.errors['username'] = ErrorList([u'帐号错误']) #.html {{form.errors.username.as_text}}
17.Template中使用cleaned_data
在view.py中使用 form.cleaned_data['键名'],template中使用form.cleaned_data.键名
18.加载动态下拉框(数据从数据库查询)
#form代码 def __init__(self, *args, **kwargs): super(ShopForm, self).__init__(*args, **kwargs) self.fields['cid'].choices = [('0','请选择')]+\ [(c.cid,c.categoryname) for c in CategoryModel.objects.all()] #另一种
CATEGORY_CHOICES = [('0','请选择')]+[(c.cid,c.categoryname) for c in CategoryModel.objects.all()]
cid = forms.ChoiceField(choices=CATEGORY_CHOICES)
#template代码 {{form.cid}}
#model代码 from django.db import models class CategoryModel(models.Model): class Meta: db_table="categorys" cid = models.AutoField(primary_key=True) categoryname = models.CharField(max_length=20) createtime = models.DateTimeField(auto_now_add = True) lastmodifytime = models.DateTimeField(auto_now = True) def __unicode__(self): return u'%s' % (self.categoryname)
19.下拉框设置选中
#view.py form.fields['cid'].choices = [(1,1),(2,2),(3,3)] form.fields['cid'].initial = [2]#选中第二个
20.图片上传
#model url = models.ImageField(upload_to = "%Y/%m/%d",blank=True)#注意此处头部不要带/,否则会提示Attempted access to '' denied. #form url = forms.ImageField() #view form = UploadFileForm(request.POST, request.FILES)必须要将request.FILES传给form的构造函数,才能将文件数据绑定到form. if 'picup' in request.FILES: image = request.FILES["picup"] else: image =None name = request.POST["picname"] s = ShopPicModle(name=name,url=image) s.save() #template <form action="/pic/create/" method="post" enctype="multipart/form-data"> 图片名:<input type="text" name="picname"/><br/> 图片:<input type="file" name="picup" /><br/> <input type="submit" name="添加"/> {% csrf_token %} </form>
20.静态资源(图片)显示
#url配置 url(r'^images/(?P<path>.*)$','django.views.static.serve', {'document_root': "/path/to/your/images/"}),#/person/web/web/images/
#template <img src='/images/{{s.url}}' width="100px"/>
DB中URL值:/shopspic/2013/08/29/ee244141a4874db7aeb034d3bd043306_550_412.jpg
图片在磁盘上的路径:person\web\web\images\shopspic\2013\08\29\ee244141a4874db7aeb034d3bd043306_550_412.jpg
21.生产环境关闭DEBUG,500的错误
DEBUG = False,只是这样会出现500的错误,需要在ALLOWED_HOSTS = ['域名'或'ip'或'*']。生产环境推荐使用域名
22.MD5加密
from hashlib import md5
md5('加密字符串').hexdigest()
23.Cookie设置
#设置cookie response = render_to_response("login.html", {"message":message}) response.set_cookie(key,value="vv",path='/') return response
#获取cookie
cookie = request.COOKIES.get(key)
24.模板继承
{%block%}告诉模板引擎。子模块可以重载这部分。
#base.html <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link type="text/css" rel="stylesheet" href="/static/css/base.css"/> <title>{%block title %} {%endblock%}</title> <body> <h1>后台管理</h1> <p class="path"> 当前位置:{%block path%}{%endblock%} <span>欢迎你:{{admin}} <a href="#">注销</a></span> </p> {%block content%}{%endblock%} </body> </html> #piclist.html {%extends "base.html"%} {%block title %}图片列表页面{%endblock%} {%block path%}图片列表{%endblock%} {%block content%} 内容 {%endblock%}
25.自定义contextprocessor
a)修改settings
TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.request', 'django.contrib.auth.context_processors.auth', 'web.offline.cookie.logined', # 自定义的 context processors 函数,格式:项目.包.模块.方法 )
b)logined方法
def logined(request): c = request.COOKIES.get(web.settings.COOKIENAME) if c: context = {'admin':c} else: context = {'admin':"未登录"} return context #返回必须是字典
26.配置多个数据库
#settings.py DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'meishi', # database 'USER': '', 'PASSWORD': '', 'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. 'PORT': '', # Set to empty string for default. }, 'backup': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'meishi2', 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', # Set to empty string for default. } }
#view.py Shop.objects.all().order_by('-ShopId')#默认使用的是default Shop.objects.all().using('backup').order_by('-ShopId')#使用其他数据库
27.Cookie设置后跳转Url(这个问题纠结了很久)
response = HttpResponseRedirect('/piclist/')# response.set_cookie(web.settings.COOKIENAME,value=owner.name,path='/') return response
28.自定义404页面
#urls.py handler404 = 'project.view.404' #需要把settings.py中的DEBUG=False才会生效
29.提交表单报错:RuntimeError: You called this URL via POST,
but the URL doesn’t end in a slash and you have APPEND_SLASH set.
将from的action地址改为/结尾的就可以了
或者
修改settings:APPEND_SLASH=False
30.Url配置name参数,
1
2
3
4
5
|
#urls.py url(r '^$' , 'wetrip.views.home.index' , name = 'home' ),
#template <a href = "{%url 'home'%}" >首页< / a>
以后url地址发生变化,只需要修改urls文件即可. |
31.文件操作(需要目录已存在)
#view.py 写文件 file_handle = open(file_path,'w+') file_handle.write(data) #encode('utf8') file_handle.close() #读文件 file_handle = open(file_path) data = file_handle.read() #decode('utf8') file_handle.close()
32.目录创建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#多层创建目录函数os.makedirs(path)。当父目录不存在的时候os.mkdir(path)不会创建,os.makedirs(path)则会创建父目录。 def mkdir(path):
# 引入模块
import os
# 去除首位空格
path = path.strip()
# 去除尾部 \ 符号
path = path.rstrip( "\\" )
# 判断路径是否存在
# 存在 True
# 不存在 False
isExists = os.path.exists(path)
# 判断结果
if not isExists:
# 如果不存在则创建目录
print path + ' 创建成功'
# 创建目录操作函数
os.makedirs(path)
return True
else :
# 如果目录存在则不创建,并提示目录已存在
print path + ' 目录已存在'
return False
|
33.返回403
1. 在settings.py里面的MIDDLEWARE_CLASSES中加入django.middleware.csrf.CsrfResponseMiddleware
2. 在settings.py里面的MIDDLEWARE_CLASSES中去掉django.middleware.csrf.CsrfViewMiddleware
34.返回Josn格式数据
#view.py from django.utils import simplejson json={'ret':ret,'save_name':new_name} #支持中文 return HttpResponse(simplejson.dumps(json,ensure_ascii = False))
35.html转义
#template {% autoescape off %} coding... {% endautoescape %} 这里的off 参数表明被autoescape包含的信息都不需要执行HTML转义。on 参数表示需要执行HTML转义
36.访问远程图片
import cStringIO, urllib2, Image url = 'remote picture' file = urllib2.urlopen(url) tmpIm = cStringIO.StringIO(file.read()) im = Image.open(tmpIm)
37.‘gbk' codec can't encode character 错误
#忽略特殊字符 str.encode('gbk','ignore')
38.获取Post name相同的值(如多个checkbox)
#view.py request.POST.getlist('name')
39.创建Django(path到django目录下)
django-admin.py startproject mysite
40.中文输出
u'中文'
41.模板注释
{# 文字#}注释的内容不会在模板渲染时输出。注释不能跨多行
42.密码框
password = forms.CharField(widget=forms.PasswordInput())
43.Template中{{ 变量}} 不要换行
相关推荐
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为...基于Django3.2+py3.9的靓号管理系统python源码+学习笔记.zip
在这个“python-Django期末大作业.zip”文件中,"ljg_resource"可能包含了学习笔记、代码示例、项目文件或其他辅助资源。通过这些材料,学习者可以加深对Django的理解,实践常见的Web应用功能,如用户注册、登录、...
Python Django 学习笔记主要关注的是Python的基本使用和Django框架的应用。首先,文档介绍了Python的基础操作,包括如何启动IDLE(Python GUI)并打印出"Hello World"。在Python中,`print`语句是用于输出信息到控制台...
### Django学习笔记知识点详解 #### 一、Django框架安装及环境配置 **知识点1:安装Django** - **背景介绍:** 在Python环境中安装Django框架是开发基于Python的Web应用程序的第一步。 - **安装步骤:** - **...
在"python-month3-master"这个文件夹中,可能包含了作者在第三个月学习Python和Django过程中积累的笔记和项目。这可能包括了对Python高级特性的探讨,如装饰器、生成器、上下文管理器,以及Django中的复杂应用场景,...
在本压缩包中,"Django学习笔记.doc文件.rar"包含了一份详尽的Django框架学习资料,由以下几个部分组成: 1. **用户身份验证.doc**:这部分讲述了Django内置的身份验证系统,包括如何创建用户账户,登录和登出功能...
Django学习笔记 本文档是 Django 学习笔记,基于 b 站千锋教育的视频课程,涵盖了 Django 的基础知识和应用实践。 知识点一:Django 项目结构 * 项目结构:manage.py、__init__.py、settings.py、urls.py、wsgi....
这个名为"Django学习笔记.zip"的压缩包文件显然包含了关于Django框架深入学习的各种资料,涵盖了从基础到进阶的主题。让我们逐一探讨这些主题。 1. **Django安装**:Django的安装通常通过Python的包管理器pip完成。...
这个“python基于django的学习笔记系统源码.zip”文件包含了一个使用Django框架构建的学习笔记系统的源代码。通过分析这个项目,我们可以深入理解Django的工作机制和开发流程。 1. **项目结构**:Django项目通常...
这个压缩包文件包含了作者精心整理的学习笔记,可能包括了Python的基础语法、高级特性、实战技巧等内容。尽管标签部分为空,我们可以根据文件名“kwan1117”推测这可能是作者或学习者在学习过程中某一阶段的笔记或者...
Python Django 学习笔记 socket运用(五).docx
Python Django 学习笔记 socket运用(五).pdf
### Python Django框架学习笔记 #### 一、Django框架简介及环境搭建 **1.1 Django框架概述** Django是一个用Python编写的开源Web框架,它遵循MVC(Model-View-Controller)设计模式,旨在简化网站开发过程,提供...
本压缩包“python学习,日常笔记上传.zip”包含了作者在学习Python过程中的笔记,可能包括了基础概念、语法结构、常用库的使用等内容。下面,我们将深入探讨Python学习的一些关键知识点。 1. **基础语法**:Python...
### Django框架学习笔记 #### 软件框架概述 软件框架是软件开发中的一种结构化设计,它提供了一种组织代码、数据和其他资源的方式,使得开发者可以更容易地构建应用程序。框架通常包含了一些预设的解决方案,这些...
本篇笔记主要介绍如何下载和安装 Python Django 的基础环境,包括 Python、Django、Apache 服务器以及针对 Oracle 数据库的 cx_Oracle 适配器。 首先,你需要确保下载正确的 Python 版本。Django 1.2 版本不支持 ...
### Django 学习笔记知识点详解 #### 一、环境搭建 **操作系统**: CentOS 6、CentOS 7 **Python 版本**: 2.7.5 **Django 版本**: 1.11.9 (CentOS 6) / 1.11.11 (CentOS 7) ##### 1. 安装 Django **安装命令**:...