开发环境:Unbuntu12.04
创建app
解决方法包括了上面的四点。
首先确保你已经安装了Python
我选择了下面的安装方法:
安装完毕以后,看是否安装成功了。。
好,没有问题。。。
下面开始web开发吧。。
新建一个项目mysite
如果出现这样的错误怎么办??
我们去看下/usr/bin/django-admin.py
这文件找/usr/local/bin/python 来解析的。。。
看下我的pyhton都在哪里。。
在/usr/bin/下。。。
相信大家都明白了。。下面我们来修改下django-admin.py
#!/usr/local/bin/python
改为:
#!/usr/bin/python
然后我们再执行 django-admin.py startproject mysites
看下mysites的目录结构
好吧。我们先让这个项目跑起来看看。。。
./manage.py runserver
浏览器,访问 http://127.0.0.1:8000/
关于数据库的链接:
我用的是Mysql
数据库的配置在settings.py
相信大家都会看明白了。。
ENGINE 是设置你要使用的数据库类型。例如使用mysql:django.db.backends.mysql
PORT是设置数据库的端口,如果没有改动默认端口的话。这里可以忽略不填写。
填写完后,需要运行
./manage.py syncdb
完成同步数据库和项目
如果出现下面的错误
执行下面的命令进行修复下:
sudo apt-get install python-mysqldb
再次执行
./manage.py syncdb
好,没有问题了。。。。
/***************************************关于表单form提交时候报错的问题********************************************/
在使用Django提交Post表单时遇到如下错误:
一般而言,这是由于Django的CSRF的机制还没有正确使用。
下面是我具体实现的一种解决方法:
1、在表单Form里加上{% csrf_token %}
2、
在Settings里的MIDDLEWARE_CLASSES增加配置:(默认是存在的)
'django.middleware.csrf.CsrfViewMiddleware',
3、在控制form视图的函数,添加context_instance=RequestContext(request)
到此,就可以解决问题了,希望对大家有用。。
/*********************************************多视图模版共用相同变量的问题*************************************************/
有时候,我们在设计的时候,需要在多个视图模版里面共用到一个相同的变量,django怎么解决这个问题的。
例如,多个页面需要显示登录名 {{username}}
1、最笨的办法当然是,给每个视图模版传输一个变量了。
#view.py
from django.short_cuts import render_to_response
render_to_response('admin.html',{'username':'kaizhu_Qin'})
几个视图模版还好,但是如果视图模版有10多个,。。你就会崩溃了。代码冗余、重复。
2、RequestConntext需要接受request和processors参数,processors是context处理器的列表集合。
默认的context处理器
的列表集合
:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
)
默认情况下,Django采用参数TEMPLATE_CONTEXT_PROCESSORS指定默认处理器,意味着只要是调用的RequestContext,那么默认处理器中返回的对象都就将存储在context中。
我们可以在app下写一个processor.py
#processor.py
def username(request):
return {'
username':'kaizhu'}
注意:template_context_processors默认在settings文件中是没有的,而是设置在global_settings.py文件中,如果想加上自己的context处理器,就必须在自己的settings.py中显示的指出参数。
#setting.py
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',#django1.4 or after
'django.core.context_processors.auth', #django1.4 before
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'myapp.processor.
username',
)
或者:
from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS +("myapp.processor.
username",)
这时,在view.py中只要把request参数传递给RquestContext就可以了。
#view.py
from django.short_cuts import render_to_response
render_to_response('admin.html',{},context_instance=RequestContext(request))
那么在视图模版就可以通过{{username}} 就可以取到 kaizhu这个值了。。