最新消息:

Django使用

Django admin 1194浏览 0评论

1、项目生成app与安装

python manage.py startapp  social

执行上述命令后,就会在项目下生成一个新的app,名字为social。注意,生成成功后会在项目目录下生成一个与app同名的文件夹。注意:生成成功并不意味着这个app生效,要使app生效需要进行以下设置来进行安装:

编辑项目的settings.py文件,找到INSTALLED_APPS设置,该参数用于告诉Django哪些app是处于激活状态,所以只要将新建的app加到此参数中就会激活新建的app。

20131226213919

只有app处于激活状态,app中的模型才会起作用,才能够在Django中操作数据库。激活app后,修改models.py来添加模型,添加完成后执行python manage.py syncdb来进行同步,这样在数据库中就会建立模型对应的相应的表。

2、数据库配置

Django默认使用的是sqlite数据库,要使用其他数据库引擎需要在settings.py中进行设置。修改的是DATABASES参数,如使用mysql数据库可以进行如下设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'relation',
        'USER': 'root',
        'PASSWORD': '',
        'HOST': 'localhost',
        'PORT':'3306'
    }
}

20131226214736

3、模板目录设置

在视图函数中为了方便,一般需要使用模板来使返回的页面更加漂亮,如使用render_to_response()函数来快速加载模板。函数的第一个参数是模板的物理路径,如果使用完整路径,则会导致程序的移植性变差,每一次移动都需要进行修改。为了方便加载模板,可以在settings.py来设置模板目录,这样就不用考虑移植问题了,过程如下

(1)在项目目录下新建文件夹用来存放模板,如static。以后将模板放到此目录下即可。

(2)在settings.py文件中加入如下代码

import os.path
TEMPLATE_DIRS=(os.path.join(os.path.dirname(os.path.dirname(__file__)),'static').replace('\\','/'),)

经过上面的设置后,直接在程序中调用模板目录下的模板即可,不需要写完整路径了。如调用模板目录static下的模板login.html,则代码为:

return render_to_response("login.html")

可以看到不需要写login.html文件的绝对路径了。

4、将Django程序部署到Apache下

参考:http://jinglingshu.org/?p=3761

5、表单提交时防止出现403的方法

参考:http://jinglingshu.org/?cat=23

6、Django中HttpResponseRedirect重定向的使用

一般在程序要设置一些目录的重定向,重定向有两种方法:一是利用403重定向;二是利用js跳转。进行403重定向,一般是在视图函数中使用HttpResponseRedirect来实现重定向,因此要注意与HttpResponseRedirect有关的以下几点,防止出错:

(1)重定向的url中前面要有 /

    from django.http import HttpResponseRedirect  
      
    def myview(request):  
        ...  
        return HttpResponseRedirect("/path/")

ps:注意上面路径是/path/,而不是path/。

(2)使用HttpResponseRedirect在使用session认证时有问题

可能跳转后没有带上原先的request对象吧。最后我也不跳转了,直接调用跳转后对应的视图函数,因为这样可以将request对象传参进去。

20131227100255

其他django重定向的设置方法,参考:http://blog.csdn.net/ei__nino/article/details/8567698。

转载请注明:jinglingshu的博客 » Django使用


Warning: Use of undefined constant PRC - assumed 'PRC' (this will throw an Error in a future version of PHP) in /usr/share/nginx/html/wp-content/themes/d8/comments.php on line 17
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址