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' ], }, }, ]
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())
浙公网安备 33010602011771号