内容整理以及补充

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>
原文地址:https://www.cnblogs.com/meihan/p/12516212.html