您的位置:首页 > 编程语言 > Go语言

Django开发问题汇总

2013-12-27 15:20 190 查看
一、关于django里CSS的静态路径设置问题

假设目录结构为:

mysite

——manage.py

——myseite

         ——static

                 ——css,images等目录

         ——templates

         ——views.py, settings.py等等


1.在settings.py里做如下设置:

STATIC_ROOT = ''      #这个一般默认就有

STATIC_URL='/static/'      #这个一般默认就有

STATICFILES_DIRS = (

//动态的获取static文件的路径

    os.path.join(os.path.dirname(__file__), './static/'),

 )

TEMPLATE_DIRS = (

    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".

    # Always use forward slashes, even on Windows.

    # Don't forget to use absolute paths, not relative paths.

    os.path.join(os.path.dirname(__file__),'./templates/'),

)
2.需要CSS的时候:

<link href="/static/css/style.css" rel="stylesheet" type="text/css">
注意:笔者在使用此方法时遇到在python manage.py runserver时管用,部署到apache失效的问题。部署到apache时的解决方法如下:
1.settings里添加如下设置:

STATICFILES_DIRS = (

    '/var/www/html/seusite/static',

)
2./etc/httpd/conf/httpd.conf里添加如下设置:

Alias /static/ /var/www/html/seusite/static/   #后面为放置CSS文件的目录
二、关于POST表单提交报403错误:Forbidden CSRF verification failed. Request aborted.
1.表单加{% csrf_token %},例如:

<form enctype="multipart/form-data" method="POST" action="/uploadfile/">{% csrf_token %}
2.在views.py里面,强制使用RequestContext代替Context

首先在views.py文件开头倒入RequestContext:

from django.template import RequestContext

然后使用RequestContext:

return render_to_response('upload.html', {'form': form}, context_instance=RequestContext(request))
3.确保MIDDLEWARE_CLASSES有如下设置:

MIDDLEWARE_CLASSES = (

    'django.middleware.common.CommonMiddleware',

    'django.contrib.sessions.middleware.SessionMiddleware',

    'django.middleware.csrf.CsrfViewMiddleware',

    'django.contrib.auth.middleware.AuthenticationMiddleware',

    'django.contrib.messages.middleware.MessageMiddleware',

)
三、django部署:apache+mod_wsgi
1.安装apache和mod_wsgi

fedora下:

sudo yum install httpd mod_wsgi.x86_64

ubuntu下:

sudo apt-get install apache2 libapache2-mod-wsgi
2.修改apache配置文件(以使用8000端口为例):

Listen 8000

<VirtualHost *:8000>

WSGIScriptAlias / 到项目的路径/mysite/mysite/django.wsgi   #指定根目录/,注意空格。wsgi文件名任取,后面创建。

Alias /static/ 到项目的路径/mysite/mysite/static/    #指定静态文件目录

<Directory "到项目的路径/seusite/seusite">

Order Deny,Allow

Allow from all

</Directory>

</VirtualHost>

3.项目目录下创建django.wsgi:

import os

import sys

import django.core.handlers.wsgi

sys.path.append('到项目的路径/mysite') #注意,只到第一层mysite

os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

os.environ['PYTHON_EGG_CACHE'] = '/tmp/.python-eggs'

application = django.core.handlers.wsgi.WSGIHandler()

4.重启apache:

fedora:sudo service httpd restart

ubuntu:sudo /etc/init.d/apache2 restart
如果遇到以下错误:

waiting apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName,则

sudo vim /etc/apache2/sites-available/default

打开default文件后,在default文件顶端加入:

ServerName 随便起个名字
四、django部署后访问网站报403错误

检查所在目录是否有x权限,没有则chmod +x 目录名
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Django CSS CSRF apache 403