Django基础

安装

pip3 install -v django==1.10.7

创建新工程

django-admin.py startproject my_blog

创建app

python manage.py startapp article

 

python manange.py -h  #帮助文档
django-admin.py startproject my_blog  #创建项目
python manage.py startapp article  #创建app

第一次执行的时候,直接执行这个命令
python manage.py migrate #命令行运行该命令

之后编辑model后,都要执行这两个
python manage.py makemigrations
python manage.py migrate


python交互环境变量设置
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_blog.settings")
django.setup()

 

python manage.py createsuperuser  #创建超级用户

 

pip install bootstrap-admin   #admin界面使用bootstrap

INSTALLED_APPS = (
    'bootstrap_admin',  #一定要放在`django.contrib.admin`前面
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'article',
)

 

models 模型

  • null 是针对数据库而言,如果 null=True, 表示数据库的该字段可以为空。

  • blank 是针对表单的,如果 blank=True,表示你的表单填写该字段的时候可以不填

 

from django.conf import settings #获取django settings 信息

 

template模版

built-in tag

{% with total=business.employees.count %}
    {{ total }} employee{{ total|pluralize }}
{% endwith %}

context_processors

在做博客的过程中,在浏览排行,评论排行,标签,文章归档,友情链接等内容每一个显示页面都是要显示的。如果在每一个views的处理函数当中都返回以上信息,这就造成了严重的代码冗余。因此就把他们设置成所有的模板视图都能够访问,这有点像全局变量。

在Django中可以通过设置context_processors,使到每一个模板视图被渲染时,都传相对应的Context值。

1.全局Context返回函数

在myApp下,创建context_processors.py文件, 并创建函数。

def global_setting(request):
    # 文章归档数据
    archive_list = Article.objects.distinct_date()
    .......
    return locals()
2. 修改settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'blog.context_processors.seo_processor'
            ],
        },
    },
]
View Code
3. 视图逻辑

通过render_to_response()渲染时,需要指定context_instance=context_instance=RequestContext(request)
,若不指定全局的Context将不会传递给相对于的模板视图, 通过render()渲染就不需要指定context_instance

def index(request):
    try:
        # 最新的文章数据,并分页
        article_list = get_page(request, Article.objects.all(), number=10)
    except Exception as e:
        logger.error(e)
    return render(request, 'index.html', locals())

  

posted @ 2017-07-07 12:40  kyo.stone  阅读(61)  评论(0)    收藏  举报