Day18:Django框架介绍、搭建项目
一、WEB框架
注:当遇到以下错误时:将settings.py改成TEMPLATE_DIRS =[]就OK了
1、MVC
Model View Controller
数据库 模板文件 业务处理
2、MTV(Django)
Model Template View
数据库 模板文件 业务处理
Django项目目录:
newday
newday #对整个程序进行配置
__init__.py
settings.py #配置文件
urls.py #url对应关系
wsgi.py #遵循wsgi规范,正式环境用uwsgi+nginx跑项目
templates
db.sqlite3
manage.py #管理django程序
修改urls.py from django.conf.urls import url from django.contrib import admin from django.shortcuts import HttpResponse import time def home(request): return HttpResponse('<h1>Hello</h1>') urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^h.html',home), ]
(1)创建app:
python manage.py startapp app名字
在pycharm中创建app也必须执行以上命令,如下图:
(2)app目录:
migrations:数据修改表结构的记录
__init__.py:
admin.py:Django为我们提供的后台管理
apps.py:配置当前app
models.py:ORM,写指定的类 通过命令可以创建数据库结构
tests.py:单元测试
views.py:业务代码
(3)创建项目完成之后需进行一下配置
1、配置模板路径 修改 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', ], }, }, ] 2、配置静态目录(
在项目同级目录(app外层)新建static目录 存放css、js文件
) STATICFILES_DIRS=( os.path.join(BASE_DIR,'static'), )
二、创建Django项目步骤
1、创建Django工程
django-admin startproject 工程名
2、cd 工程名
python manage.py startapp cmdb
3、静态文件
project.settings.py里面写
STATICFILES_DIRS=(
os.path.join(BASE_DIR,"static"),
)
4、模板路径
DIRS==[os.path.join(BASE_DIR,'templates'),]
5、settings.py中找到middlerware
注释csrf
6、定义路由规则
url.py中写"login"----->函数名
7、定义试图函数
app下views.py写
def func(request):
#request.method GET/POST
#request.POST.get('',None)
#return HttpResponse("字符串")
#return render(request,"HTML模板的路径")
#return redirect("只能填URL路径")
8、模板渲染
(1)特殊的模板语言
def func(request):
return render(request,"index.html",{"current_user":"alex"})
index.html内容如下:
<div>{{current_user}}</div>
(2)for循环
def func(request):
return render(request,"index.html",{'current_user':"alex",'user_list':['alex','eric']})
index.html内容如下:
{%for row in user_list%}
<li>{row}</li>
{%endfor%}
(3)索引
def func(request):
return render(request,"index.html",{'current_user':"alex",'user_list':['alex','eric'],'user_dict':{'k1':'v1','k2':'v2'}})
index.html的内容如下:
<li>{{user_dict.k1}}</li>
<li>{{user_dict.k2}}</li>
(4)条件
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的内容:
{%if age%}
<a>有年龄</a>
{%else%}
<a>无年龄</a>
{%endif%}