1.中文URL:
这个其实是很常识的东西,但是之前做web一直没注意过,在使用HttpResponseRedirect的时候,如果Redirect的URL中带中文的话,会报UnicodeEncodeError错误。
from django.utils.http import urlquote
#return的时候在URL前加上urlquote
return HttpResponseRedirect(urlquote("/wiki/%s" % page.pagename))
这个URL在ie的地址栏看到的就是一堆%的东西,Firefox等好像看到的是中文
2.django的信号使用无法触发信号里的内容
解决方案:在django 1.7后,使用信号时候需要在应用配置类中的ready() 方法中连接。
所以我们需要配置先ready()
需要在项目的app.py,init.py两个文件中写入配置
3.django-admin.py:未找到命令
解决方案:将django的安装路径添加到环境变量中,
一般的安装路径在python目录下的\Lib\site-packages\Django-1.8-py2.7.egg\django\bin,
可能有不同,总之在python安装目录下找到django\bin即可。
添加完环境变量后记得重启命令提示符,否则还是提示错误。
4.当我把 DEBUG = True设为False的时候运行 python manage.py runserver 的时候
报错 : CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
解决方案: 在 setting.py 中添加 ALLOWED_HOSTS = [‘127.0.0.1‘, ‘localhost‘]
5.外部机器无法访问本站点
然后在settings里修改ALLOWED_HOSTS = [],
改为ALLOWED_HOSTS = [‘*’,]
6.django解决跨域请求的问题
解决方案:添加中间件,安装django-cors-headers
配置settings.py文件,添加
MIDDLEWARE_CLASSES = (
…
‘corsheaders.middleware.CorsMiddleware’,
‘django.middleware.common.CommonMiddleware’, # 注意顺序
…
)
#跨域增加忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
‘*’
)
7.django传值的时候,接口得到的值并不是原数据
这是传数据时前端from表单使用的原数据,而此时后台接受到的就是带#的数据 ,由于django需要接受的是一个json数据,需要在前端用json进行解析
8.商品要排序,汉字如何排序
将 goodsname convert为gbk ,就可以使用排序
还有一种便是使用中文库import locale,
# -*- coding: utf-8 -*-
import locale
locale.setlocale(locale.LC_COLLATE, 'zh_CN.UTF8')
cmp = locale.strcoll
items = list('自挂东南枝'.decode('utf-8'))
print 'before'.center(10, '=')
print ''.join(items)
items.sort(lambda x, y: cmp(x, y))
print 'after'.center(10, '=')
print ''.join(items)
输出
==before==
自挂东南枝
==after===
东挂南枝自
版本错误
一丶项目目录的不同:
1、Django1.7.7会在创建项目目录后自动创建一个与项目目录同名的Python包,将1.2.7中在项目目录下的“__init__.py"、”admin.py"、"urls.py"三个文件包含到这个同名的文件中,并新增一个“wsgi.py"文件。
2、项目目录中创建了app后,1.7.7会比1.2.7在app目录中出"admin.py"及"migrations"两个文件。
二丶settings配置文件的不同:
以mysql为例:
在1.2.7中,数据库引擎字段(ENGINE)应为"mysql""
而在1.7.7中,数据库引擎字段(ENGINE)为”django.db.backends.mysql"
且1.7.7中数据库配置默认只有"ENGINE"和"NAME"字段,“USER"、"PASSWORD"、"HOST"、”PORT“字段需要自己加上。
三丶模板路径配置
1.2.7中的settings.py文件中存在"TEMPLATE_DIRS"的设置项,且默认为空元组
而在1.7.7中的settings.py文件中没有"TEMPLATE_DIRS"的设置项,需要自己加进来,且需要设置为
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]