内容整理以及补充
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>
浙公网安备 33010602011771号