创建Django工程
django-admin startproject [工程名称]
目录结构
zhihu
- zhihu # 对整个程序进行配置
- init
- settings # 配置文件
- url # URL对应关系
- wsgi # 遵循WSIG规范,uwsgi + nginx
- manage.py # 管理Django程序:
- python manage.py
- python manage.py startapp xx
- python manage.py makemigrations
- python manage.py migrate
运行Django功能
python manage.py runserver 127.0.0.1:8001
创建app
python manage.py startapp cmdb
python manage.py startapp openstack
文件名 | 解释 |
---|---|
migrations | 目录,数据修改表结构时产生日志 |
admin | Django为我们提供的后台管理 |
apps | 配置当前app |
models | ORM,写指定的类 通过命令可以创建数据库结构 |
tests | 单元测试 |
views | 业务代码 |
配置模板的路径
TEMPLATES = [{'DIRS': [os.path.join(BASE_DIR, 'templates')],}]
配置静态目录
static 默认静态文件目录
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static' ),)
<link rel="stylesheet" href="/static/commons.css" />
settings.py
middlerware
注释csrf
定义路由规则
url.py
'login'-->函数名
定义视图函数
app下views.py
def func(request):
# request.method GET / POST
# http://127.0.0.1:8009/home?nid=123&name=alex
# request.GET.get('',None) # 获取请求发来的而数据
# request.POST.get('',None)
# return HttpResponse("字符串")
# return render(request, "HTML模板的路径")
# return redirect('/只能填URL')
模板渲染
特殊的模板语言
- {{ 变量名 }}
def func(request):
return render(request, "index.html", {'current_user': "alex"})
index.html
<html>
..
<body>
<div>{{current_user}}</div>
</body>
</html>
====> 最后生成的字符串
<html>
..
<body>
<div>alex</div>
</body>
</html>
- For循环
def func(request):
return render
(request, "index.html", {'current_user': "alex", 'user_list': ['alex','eric']})
index.html
<html>
..
<body>
<div>{{current_user}}</div>
<ul>
{% for row in user_list %}
{% if row == "alex" %}
<li>{{ row }}</li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>
- 索引
def func(request):
return render(request, "index.html", {
'current_user': "alex",
'user_list': ['alex','eric'],
'user_dict': {'k1': 'v1', 'k2': 'v2'}})
index.html
<html>
..
<body>
<div>{{current_user}}</div>
<a> {{ user_list.1 }} </a>
<a> {{ user_dict.k1 }} </a>
<a> {{ user_dict.k2 }} </a>
</body>
</html>
- 条件
def func(request):
return render(request, "index.html", {
'current_user': "alex",
"age": 18,
'user_list': ['alex','eric'],
'user_dict': {'k1': 'v1', 'k2': 'v2'}})
index.html
<html>
..
<body>
<div>{{current_user}}</div>
<a> {{ user_list.1 }} </a>
<a> {{ user_dict.k1 }} </a>
<a> {{ user_dict.k2 }} </a>
{% if age %}
<a>有年龄</a>
{% if age > 16 %}
<a>老男人</a>
{% else %}
<a>小鲜肉</a>
{% endif %}
{% else %}
<a>无年龄</a>
{% endif %}
</body>
</html>
- 字典
USER_DICT = {
'root1': 'toor1',
'root2': 'toor2',
'root3': 'toor3',
}
def index(request):
return render(request, 'index.html', {'user_dict': USER_DICT})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ user_dict.root1 }}
<ul>
{% for row in user_dict.items %}
<li>{{ row }}</li>
{% endfor %}
</ul>
<ul>
{% for row in user_dict.keys %}
<li>{{ row }}</li>
{% endfor %}
</ul>
<ul>
{% for row in user_dict.values %}
<li>{{ row }}</li>
{% endfor %}
</ul>
</body>
</html>