1、创建Django工程
django-admin startproject 工程名
2、创建app
cd 工程名 python mange.py startapp app名
3、静态文件
project.settings.py =>
STATICFILES_DIRS = [ os.path.join(BASE_DIR,"static"), ]
4、模板路径
project.settings.py =>TEMPLATES中增加 DIRS
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', ], }, }, ]
5、settings中
middlerware #注释csrf
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
6、定义路由规则
project下的url.py login -->函数名
7、定义视图函数
app下的views.py
def func(request): #request.method GET /POST方法 #http:127.0.0.1:8000/home?nid=123&name=zhangqigao #request.GET.get('',None) #获取get请求发来的数据 #request.POST.get('',None) #获取post请求发来的数据 # return HttpResponse("字符串") # return render(request,"HTML模板路径") # return redirect('/只能填写url') #url前面的斜杠 / 代表ip+端口,本地的话就是:127.0.0.1:8000,所以不能省略
8、模板渲染
取变量名
{{变量名}}
视图函数 view.py,第三个参数传入一个字典
def func(request): return render(request,"index.html",{'current_user':"ccc"}) #这边传入字典
html模板,取变量的值current_user
<div>{{current_user}}</div> #这边获取值,{{key值}}
总结
视图函数做的三件事情,
1、先把html模板拿过来。
2、再把值和模板进行渲染
3、将替换好的值的html,生成新的字符串,整体返回给用户
这个替换是什么时候做的呢?是返回给用户的一刹那之前,做的替换。所以浏览器拿到字符串的时候,永远是被渲染完毕的字符串(已完成替换)。
for循环
user_list传一个列表
def func(request): return render(request,"index.html",{'current_user':"ccc",'user_list':['alex','eric']})
这里要循环user_list
<ul> {% for row in user_list %} <li>{{row}}</li> {% ednfor %} </ul>
索引
def func(request):
return render(request,
"index.html",{'current_user':"ccc",
'user_list':['alex','eric'],
'user_dict':{'k1':'v1','k2':'v2'}})
index.html的内容如下:
#列表的根据索引去值方法
<a>{{user_list.
0
}}<
/
a>
<a>{{user_list.
1
}}<
/
a>
#字典根据索引取值方法
<a>{{user_dict.k1}}<
/
a>
<a>{{user_dict.k2}}<
/
a>
条件
def func(request):
return render(request,
"index.html",{'current_user':"ccc",
'age':18,
'user_list':['alex','eric'],
'user_dict':{'k1':'v1','k2':'v2'}})
index.html内容如下:
嵌套if....elif...else....:
{% if age %} #age为18,所以为true <a>有年龄</a> {% if age > 16 %} #比较大小 <a>老男人</a> {% elif age >18 %} <a>小男人</a> {% else %} <a>小鲜肉</a> {% endif %} {% else %} <a>无年龄</a> {% endif %}
if语句嵌套在for循环当中:
<ul> {% for row in user_list %} {% if row == "zhangqigao" %} <li>{{row}}</li> {% endif %} {% endfor %} </ul>