如下如下:
1.创建Django工程 Django-admin startproject 工程名 mysite settings.py---主配置文件 urls.py-------URL路由文件 wsgi.py-------网络通信接口 templates-------HTML文件的归置目录 manage.py-------diango管理主程序 2.创建APP去处理业务请求,一个工程下面可以有多个APP.相当于一个大型项目中的分系统、子模块、功能部件等等,相互之间比较独立,但也有联系。 所有的APP共享项目资源。 cd 工程名 python manage.py startapp cmdb app目录: -migrations 数据操作记录,是自动创建的。数据修改表结构 -__init__.py #在python3里面可有可无都行 -__init__.py -admin.py #django 为我们提供的后台管理。 -apps.py #配置当前App的 -models.py #ORM,写指定的类,通过命令可以创建数据库结构。 -tests.py #单元测试 -views.py #业务代码。这个才是真正写代码的地方,上面的都是做配置的。 3.静态文件配置-在工程下面的setting中,即主配置文件中进行配置,CSS,JS等。 mysite.settings.py,配置如下: STATICFILES_DIRS=(OS.PATH.JOIN(BASE_DIR,‘static‘),) #因为是元组,一定要有逗号 4.模板路径配置-在工程下面的setting中,即主配置文件中进行配置,HTML等。 DIRS==> [os.path.join(BASE_DIR,‘templates‘),] 5.关闭django的跨站请求保护机制-在工程下面的setting中,即主配置文件中进行配置 注释掉: #‘django.middleware.csrf.CsrfViewMiddleware‘ 6.定义路由规则-在工程下面的urls.py中,即URL路由文件中进行配置 urls.py ‘login‘--->函数名(只是对应一个函数名,后面是不带括号的) 7.定义视图函数-APP下的views.py中写具体的函数内容。 app->views.py def func(request): #request中包含客户端发来的请求中的所有内容 #去请求里面取数据 #request.method: GET/POST #获取请求的方式 #request.GET.get(‘‘,None) #获取请求发来的数据 127.0.0.1:8000/home?nid=123&name=Jack #request.POST.get(‘email‘,None) 通过视图函数给用户返回数据的3中方法 #return HttpResponse(‘字符串‘) #return render(request,‘html模板的路径‘) 例如:test1/home.html #return redirect(‘/只能填URL‘,) 不能填html模板的路径,只能填URL 8.模板渲染 有一套特殊的模板语言 ======{{变量名}} 1). def func(request): return render(request,‘index.html‘) #发送给用户的是静态的数据 2). def func(request): return render(request,‘index.html‘,{‘current_user‘:"Jack"}) # index.html <html> <body> <div>{{current_user}}</div> #{{current_user}}相当于取变量值 </body> </html> 步骤: 1>.用户请求来了,首先到达视图函数 2>.视图函数先去把模板拿过来,模板里面有特殊标记,再把值与模板进行渲染,渲染完成之后就变成了字符串。如下: ================最后生成的字符串,整体返回给用户。特殊的标记是在什么时候所做的替换?---视图函数在返回数据的那一刹那之前做的。 所以咱们的浏览器拿到字符串的时候,永远是被渲染完毕的字符串。 <html> <body> <div>Jack</div> </body> </html> ======For循环 def func(request): return render(request,‘index.html‘,{‘current_user‘:"Jack",‘user_list‘:[‘alex‘,‘eric‘]}) index.html <html> <body> <div>{{current_user}}</div> #{{current_user}}相当于取变量值 <ul> {% for row in user_list %} #row代表列表中的每一个元素,是一个变量名 <li>{{row}}</li> {% endfor %} </ul> </body> </html> ======字典索引,注意字典与列表的取法不同,一个用的是角标,一个用的是key值。 def func(request): return render(request,‘index.html‘,{ ‘current_user‘:"Jack", ‘user_list‘:[‘alex‘,‘eric‘], ‘user_dict‘{‘k1‘:‘v1‘,‘k2‘:‘v2‘}}) index.html <html> <body> <div>{{current_user}}</div> #{{current_user}}相当于取变量值 <a>{{user_list.1}}</a> <a>{{user_dict.k1}}</a> <a>{{user_dict.k2}}</a> </body> </html> ======条件======= if可以嵌套if循环,也可以嵌套到for循环里面。 def func(request): return render(request,‘index.html‘,{ ‘current_user‘:"Jack", ‘age‘:18, ‘user_list‘:[‘alex‘,‘eric‘], ‘user_dict‘{‘k1‘:‘v1‘,‘k2‘:‘v2‘}}) index.html <html> <body> <div>{{current_user}}</div> #{{current_user}}相当于取变量值 <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>
时间: 2024-10-29 15:56:28