[django]使用 nginx + fastcgi 部署 django

本文测试环境:linux mint,python 2.7,django 1.4

安装依赖

安装 flup:

$ sudo pip install flup

安装 nginx

$ sudo apt-get install nginx

设置 django

本例中项目名为 bbs:

$ pwd
/var/www/bbs

$ tree . -d
.
|-- bb  # 应用
|-- bbs  # settings.py wsgi.py
|-- static  # 静态文件
|   `-- css
`-- templates  # TEMPLATE_DIRS

配置 settings:

TEMPLATE_DIRS = (
    '/var/www/bbs ...
more ...

修改 pelican 3.1 使之支持中文文件夹作为分类目录

前提:

windows + pelican 3.1 + python 2.6
并且 pelican 配置文件中设置了 USE_FOLDER_AS_CATEGORY = True(默认为 True,只要不设置为 False 即可)

默认情况下,pelican 不支持中文文件夹作为分类目录:

d:\myblog>pelican content -o output -s pelicanconf.py -D
...

CRITICAL: 'utf8' codec can't decode byte 0xd3 in position 2: invalid continuation byte
Traceback (most recent call last ...
more ...

[django]使用内置的 comments 实现评论功能

安装 comments 应用

  1. 编辑 settings 文件,INSTALLED_APPS 项添加 'django.contrib.comments',

    INSTALLED_APPS = (
        # ...
        'django.contrib.comments',
        # ...
    )
    
  2. 执行 python manage.py syncdb 创建评论表。

  3. 编辑 urls.py 文件,添加评论相关的 url:

    urlpatterns = patterns('',
        # ...
        url(r'^comments/', include('django.contrib.comments.urls')),
        # ...
    )
    

示例 views

def display_topic(request, topic_id):
    topic = Topic.objects.get(id=topic_id)
    return ...
more ...

[django]使用 Paginator 实现分页功能

在 django 中使用 Paginator 可以很方便的实现分页功能,下面就通过一个具体的例子来讲讲如何使用 Paginator。

在 view 中使用 Paginator

from django.core.paginator import Paginator
from django.core.paginator import EmptyPage
from django.core.paginator import PageNotAnInteger
from hello.models import Topic


def index(request):
    limit = 3  # 每页显示的记录数
    topics = Topic.objects.all()
    paginator = Paginator(topics, limit)  # 实例化一个分页对象

    page ...
more ...

[django]使用自定义 context processor 实现模板全局变量

本文使用的是 django 1.4.3。

写一个 context processor 函数

可以把这个函数放在项目的任何地方,本文是放在应用目录下的 context_processors.py 文件中:

from hello.models import Category


def categories(request):  # 只有一个参数(HttpRequeset 对象)
    all_categories = Category.objects.all()
    context = {'categories': all_categories}

    return context  # 返回值必须是个字典

注意:context processor 函数只有一个参数,即 HttpRequest 对象,并且函数的返回值必须是个字典。

修改 settings 文件

修改 TEMPLATE_CONTEXT_PROCESSORS 选项值,添加新建的 ...

more ...