写给前端看的
教程
1. Django 命令
Django 安装成功,系统便拥有了 django-admin.py
命令。执行 django-admin.py startproject bitcms
会自动生成项目 bitcms。
项目初始目录结构如下:
bitcms └── bitcms ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py ├── manage.py
其中,需要特别注意 manage.py 文件,它是 Django 项目管理的命令行工具。进入项目根目录,通过 manage.py 可以进行启动服务、新建应用、同步数据、创建用户等。
这篇文章分享之前我还是要推荐下我自己的前端群:611428142,不管你是小白还是大牛,小编我都挺欢迎,不定期分享干货,包括我自己整理的一份2017最新的前端资料和零基础入门教程,欢迎初学和进阶中的小伙伴。。
前端同学可能用到 Django 命令:
命令 | 参数说明 |
---|---|
django-admin.py --version | 查看 Django 版本。例如:我的 Django 版本为 1.8.12 |
python manage.py syncdb | 同步数据,文档称自 1.7 版起已弃用 |
python manage.py migrate | 启动项目时,可能会看到红色提醒You have unapplied migrations; your app may not work properly until they are applied. 按照提示,执行 python manage.py migrate 即可。这时,会在项目根目录生成 db.sqlite3 数据文件,保存 Django 自带一些应用数据 |
python manage.py runserver | 启动 Django 服务。默认在 127.0.0.1:8000 启动,如果提示 Error: That port is already in use. 说明端口被占用。可以选择在其他端口(如 8080)启动:python manage.py runserver 8080 |
python manage.py startapp blog | 新建一个应用(如:blog)。执行成功,会在项目根目录生成 blog 应用目录。blog 目录下的文件在下一小节介绍 |
python manage.py collectstatic | 把 app 下 static 中的静态文件全部拷贝到 STATIC_ROOT 路径指定的文件夹下。变量STATIC_ROOT 在settings.py 中设置 |
Tips:
使用 python manage.py 系列命令时,通常会将具体参数写入项目配置目录下的单独配置文件,如 bitcms/settings_dev.py
。<br>
然后,通过连接 --settings=bitcms.settings_dev
执行。以我们 bitcms.com 开发环境为例:
同步数据:
python manage.py syncdb --settings=bitcms.settings_dev
启动服务:
python manage.py runserver --settings=bitcms.settings_dev
2. Django 项目结构
bitcms └── bitcms ├── __init__.py ├── settings.py ├── settings.dev.py ├── urls.py ├── wsgi.py └── blog └── migrations ├── __init__.py └── templates └── blog ├── index.html ├── __init__.py ├── admin.py ├── models.py ├── tests.py ├── urls.py ├── views.py └── templates ├── 404.html
各目录文件的具体说明:
bitcms(项目容器,执行 django-admin.py startproject bitcms 自动生成)
Tips:
其中,前端开发人员需要注意的目录文件包括:
日常开发中,主要关心
templates
目录和static
目录下的文件即可搭建环境时,需要执行
pip install -r requirements.txt
安装项目后端依赖运行环境时,需要执行
python manage.py runserver --settings=bitcms.settings_dev
开发环境报 Bad Request(400) 错误时,在
bitcms/urls.py
设置ALLOWED_HOSTS=['*']
允许任意访问来源新建应用时,需要在
bitcms/settings.py
等 settings 文件加入应用名;同时,在bitcms/urls.py
添加 URL 匹配添加 HTML 页面时,除了编写模板文件,还需要修改应用下的
urls.py
、views.py
文件,以及项目配置目录bitcms
下的urls.py
。后面小节会具体介绍
3. 添加新页面
想要为blog 应用
添加一个页面,并在 Django 服务中通过 URL 访问,需要完成以下步骤:
添加
blog 应用
到bitcms/settings.py
:INSTALLED_APPS = (
添加模板文件
blog/templates/blog/index.html
:<!DOCTYPE html>
添加响应函数到
blog/views.py
:# -*- coding: utf-8 -*-from django.shortcuts import render# Create your views here.def index(request):context = {}context['title'] = '首页'context['blogs'] = [{
添加应用内路由
blog/urls.py
:# -*- coding: utf-8 -*-from django.conf.urls import include, url# import blog.views as blog_viewsfrom . import views
添加项目配置路由
bitcms/urls.py
:# -*- coding: utf-8 -*-"""bitcms URL Configuration
Tips:
如果出现 SyntaxError: Non-ASCII character 错误,说明 python 文件中(包括注释)出现了汉字。
这时,需要在代码最开始位置加入
# -*- coding: utf-8 -*-
如果服务正常启动,页面仍然报
ERR_EMPTY_RESPONSE
错误,则可能是因为开启了翻墙工具,请尝试退出翻墙工具后重试bitcms/settings.py
中DEBUG = True
时,如果找不到静态资源,尝试在bitcms/urls.py
配置:STATICFILES_DIRS = (
另外,如果使用 Django 相对路径方式加载静态资源,如
<img src="{% static image %}loading.gif" />
,还需要在模板文件头部添加{% load static %}
bitcms/settings.py
中DEBUG = False
时,如果找不到静态资源,尝试在bitcms/urls.py
配置:from django.views.static import serve as static_serveif settings.DEBUG is False:
如果向后端发送的是 Ajax 请求,则需要在
views.py
函数做相应处理:# -*- coding: utf-8 -*-from django.shortcuts import renderfrom django.http import JsonResponsedef hotNews(request):
前端发送 Ajax 请求事,为了防止 CSRF 攻击,最好做以下设置:
$.ajaxSetup({
4. DTL 模板标签
DTL(Django template language) 是 Django 默认的模板语言,DTL 常用模板标签示例:
{{ sum|default:'0.00' }}
{% load static %}
{% url 'articel' 12 %}
{% if value in [10, 100, 1000] %}
{% for item in list reversed %} <li>
{% for key, value in json.items %}
{{ request.user }}
{% if request.user.is_authenticated %}
{{ request.path }}?{{ request.GET.urlencode }}
{% csrf_token %}
{# 模板注释 #}
{{ list|join:", " }}
{% include "nav.html" %}
{% block css %}{% endblock %}
{% extends "base.html" %}
5. 隔离项目运行环境
开发中经常会在一台机器上安装多个的项目,各项目使用的 python 版本或依赖(如 Django)版本不同时,后安装的就会覆盖之前安装,造成之前项目无法运行。
可以通过 virualenv、Anaconda 等工具,在同一机器搭建多个虚拟 python 运行环境,将各项目隔离来避免以上问题。<br>
下面以 Anaconda 为例,列出搭建一个 python 的虚拟运行环境用到的命令:
查看 python 环境列表:
conda info --envs
创建一个 python3 虚拟环境:
conda create -n bitenv python=3
激活(进入) py3 虚拟环境:
source activate bitenv
查看 python 版本:
python --version
查看 bitenv 已安装的 packages:
conda list -n bitenv
在 bitenv 安装 packages:
conda install -n bitenv Django=1.8.2
注销(离开)当前环境,恢复之前环境状态:
source deactivate bitenv
移除 bitenv 虚拟环境:
conda remove -n bitenv --all
6. 结语
大家应该先给自己定位,再来学习前端。目前前端也有好几种,偏设计的(主攻html、css和设计相关的,通俗点说就是可以自己设计页面自己实现的),偏业务的(主攻js、angularjs、nodejs,顾名思义就是写业务以实现功能为主)。当然也不乏有大神集两者为一身。不管哪一种,都必须得有一定的基本功(html、css、js),所以题主从这三个基本技能开始学习吧,入门不需要太深入的书,w3cshool足矣,具体怎么它们之间的用法和关联相信你能在亲自动手做过一些实例后会有自己体悟的。有一定基础后题主可自己根据的需要或者公司需要选择往哪个方向发展,再在这个方向深入学习发展。
本人主要从事前端方向开发,刚接触 Django 不久,以上理解难免有误。欢迎留言指出~