Django开发问题汇总

一、关于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 目录名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值