一、关于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 随便起个名字
假设目录结构为:
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 目录名
检查所在目录是否有x权限,没有则chmod +x 目录名