博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WEP开发-----Django框架初级应用
阅读量:4987 次
发布时间:2019-06-12

本文共 7743 字,大约阅读时间需要 25 分钟。

初识Django

Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。

 

基本配置

day 48    自己写的wep框架(自己写的代码)    服务端    1.起服务(ip:port) 等待连接(监听)    4.服务端接收请求    5.返回响应        请求和响应        get请求        请求头            HTTP1.1 URL 200ok            \r\n        \r\n\r\n        请求体(没有)            \r\n\r\n        post请求        请求头            HTTP1.1 URL 200ok     url里面是请求数据            \r\n        \r\n\r\n        请求体            username:alex            password:dashabi                    客户端(浏览器)    2.浏览器连接服务器    3.发送请求    Django    Django安装与使用            1. pip3 -V   检查是否安装过    2. pip3 install Django   下载安装    3. Django-admin   查看参数    4. 配置环境变量  把    5.命令行创建一个Django 项目  django-admin startproject pys7    创建的文名字随意    6.cd pys7    7.python manage.py runserver    8.有一个db.数据库文件  不需要 可以直接删除    9.manage.py  是管理者   管理django项目的   有很多命令    例如启动命令    10.同名的是项目文件夹  不要动      11.urls.py  是函数和uel的对应文件夹  配置对应关系    12.setting.py  是配置相关    13.wsgi.py  是管server的服务的  消息管理(了解)    14.views.py  自己写的函数  统一放在这里    15.__init__.py    16.templates   存放模板文件的(html文件)    index.html        13.socket服务端 有第三方的做的 不需要管收发消息了    14.wep应用服务器    wep server   他们之间有个规则  wsgi协议 处理请求 分发请求    15.我们写的都是wep应用   只需要关心请求的url 和回复的页面            16.pycharm里面创建一个django文件       17.templates  里面放模板文件        18.框架做的作用   前端    19.python manage.py runserver 127.0.0.1:8888 就可以改端口ip    20.回请求 需要按要求回  给一个Http的响应    包一下函数请求       from django.shortcuts import HttpResponse    21.#用户名 密码  报头等 都是request        # return HttpResponse("ok")        #包装成Http请求发给server端   然后再返回request 就代表了请求的所有内容 包括 参数 数据    22.cd cd G:\学习盘\python文件夹\.idea\代码文件夹\7期代码文件夹\django\myweb            23.修改配置文件        -路径   模板文件夹的路径(TEMPSLTES=['DIRS':[os.path.join(BASE_DIR,'static')]])        -注释掉一个CSRF的中间件        -静态文件路径            STATIC_URL=    "/static/"  在html文件上就用这个开头来引用静态文件                        STEMPSLTES_DIRS=                os.path.join(BASE_DIR,'static')                    24.新手必备三件套        from django.shortcuts impot            httpresponse   你写什么就回什么  字符串            render        渲染(request,'index.html',{
'name':'alex'}) redirect (你要跳转的url) 24.1 request: 自己写的函数里面的形参(代表了所有请求的相关内容) request.mechod request.GET url里面有参数的时候 request.GET.get() request.POST 获取请求体里面的数据 request.POST.get() 25.模板语言: {
{变量名}}error {
%for i in class_list%} {
{i.name}} {
{i.id}} {
%endfor%} {
%if 条件%} 要做的事 {
%else%} 要做的事 {
%endif%} 26.AJAX 偷偷的发请求(页面不刷新) 区别于from表单的提交方式 基于jquery的AJAX $.ajax({ url:'/url/' type:'post' data:{
'name':'alex'} success:function(data){ //data就是后端发过来的数据字符串 //前端做反序列化 var dataobj=JSON.parse } }) 27.后端序列化
基本配置
1 概述: 2      静态文件交由Web服务器处理,Django本身不处理静态文件。简单的处理逻辑如下(以nginx为例): 3               URI请求-----> 按照Web服务器里面的配置规则先处理,以nginx为例,主要求配置在nginx. 4                              conf里的location 5                          |---------->如果是静态文件,则由nginx直接处理 6                          |---------->如果不是则交由Django处理,Django根据urls.py里面的规则进行匹配 7     以上是部署到Web服务器后的处理方式,为了便于开发,Django提供了在开发环境的对静态文件的处理机制,方法是这样: 8  9 STATIC配置:10 STATIC主要指的是如css,js,images这样文件:11 TATIC_URL = '/static/'      # 别名12 STATICFILES_DIRS = (13             os.path.join(BASE_DIR,"static"),  #实际名 ,即实际文件夹的名字14         )15 16 '''17 18 注意点1:19  django对引用名和实际名进行映射,引用时,只能按照引用名来,不能按实际名去找20         21         ------error-----不能直接用,必须用STATIC_URL = '/static/':22         23 24 注意点2:25  STATICFILES_DIRS = (26     ("app01",os.path.join(BASE_DIR, "app01/statics")),27         )28 29  30 31 '''
基本配置二

 

MTV模型*****

Django的MTV分别代表:models(数据库,模型)   templates(html模板)  views(业务逻辑处理)          --> MTV

       Model(模型):负责业务对象与数据库的对象(ORM)

       Template(模版):负责如何把页面展示给用户

       View(视图):负责业务逻辑,并在适当的时候调用Model和Template

       此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

 

视图层--路由配置系统(views/urls)

URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;

你就是以这种方式告诉Django,对于这个URL调用执行这段代码,对于那个URL调用那段代码

1 urlpatterns = [ 2     url(正则表达式, views视图函数,参数,别名), 3 ] 4   5 参数说明: 6   7     一个正则表达式字符串 8     一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 9     可选的要传递给视图函数的默认参数(字典形式)10     一个可选的name参数
路由分发

单一路由对应   :    url(r'^index$', views.index),

基于正则的路由

 

from django.conf.urls import urlfrom . import viewsurlpatterns = [    url(r'^articles/2003/$', views.special_case_2003),    url(r'^articles/([0-9]{4})/$', views.year_archive),    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),] '''    NOTE:    1 一旦匹配成功则不再继续    2 若要从URL 中捕获一个值,只需要在它周围放置一对圆括号。    3 不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 而不是 ^/articles。    4 每个正则表达式前面的'r' 是可选的但是建议加上。一些请求的例子:    /articles/2005/3/ 不匹配任何URL 模式,因为列表中的第三个模式要求月份应该是两个数字。    /articles/2003/ 将匹配列表中的第一个模式不是第二个,因为模式按顺序匹配,第一个会首先测试是否匹配。    /articles/2005/03/ 请求将匹配列表中的第三个模式。Django 将调用函数                       views.month_archive(request, '2005', '03')。    '''
正则的路由

 

分组

下面的示例使用简单的、没有命名的正则表达式组(通过圆括号)来捕获URL 中的值并以位置 参数传递给视图。在更高级的用法中,可以使用命名的正则表达式组来捕获URL 中的值并以关键字 参数传递给视图。

 

在Python 正则表达式中,命名正则表达式组的语法是(?P<name>pattern),其中name 是组的名称,pattern 是要匹配的模式

 

############################无命名#相当于传参数 url(r'^index/(\d{4})',views.index)        def index(request,arg):        return HttpResponse(arg)    #url访问http://127.0.0.1:8000/index/1113#接受两个参数url(r'^index/(\d{4})/(\d{2})',views.index)    def index(request,arg,arg1):        return HttpResponse("year: %s month: %s"%(arg,arg1))#url访问http://127.0.0.1:8000/index/2017/06    year: 2017 month: 06############################有命名url(r'^index/(?P
\d{4})/(?P
\d{2})',views.index) def index(request,year,month): return HttpResponse("year: %s month: %s"%(year,month))#url访问http://127.0.0.1:8000/index/2017/06 year: 2017 month: 06  
有名/无名 分组

name参数

name参数:        url(r'^login.html/', views.login,name="Login"), # login(request)        in template:            action="{% url 'Login' %}" 					click

 

模板语言与反向解析

反向解析:

Django 提供一个办法是让URL 映射是URL 设计唯一的地方。你填充你的URLconf,然后可以双向使用它:

  • 根据用户/浏览器发起的URL 请求,它调用正确的Django 视图,并从URL 中提取它的参数需要的值。
  • 根据Django 视图的标识和将要传递给它的参数的值,获取与之关联的URL。

第一种方式是我们在前面的章节中一直讨论的用法。第二种方式叫做反向解析URL、反向URL 匹配、反向URL 查询或者简单的URL 反查。

在需要URL 的地方,对于不同层级,Django 提供不同的工具用于URL 反查:

  • 在模板中:使用url 模板标签。
  • 在Python 代码中:使用django.core.urlresolvers.reverse() 函数。
  • 在更高层的与处理Django 模型实例相关的代码中:使用get_absolute_url() 方法。

 

模板语言: HTML代码+模板语法

模板的创建过程中,读取模板语言,将获取的数据插入到写好的模板中,最后将信息返回给用户

该语言可以实现数据展示,模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签。

也就是执行函数的变量 与 HTML中的特殊标签和变量的替换

 

在 Django 模板中遍历复杂数据结构的关键是句点字符  .语法:  1.{
{var_name}}模板执行函数def index(request): import datetime s="hello" l=[111,222,333] # 列表 dic={
"name":"yuan","age":18} # 字典 date = datetime.date(1993, 5, 2) # 日期对象 class Person(object): def __init__(self,name): self.name=name person_yuan=Person("yuan") # 自定义类对象 person_egon=Person("egon") person_alex=Person("alex") person_list=[person_yuan,person_egon,person_alex] return render(request,"index.html",{
"l":l,"dic":dic,"date":date,"person_list":person_list})  template中html中替换的模板语言:

{
{s}}

列表:{
{ l.0 }}

列表:{
{ l.2 }}

字典:{
{ dic.name }}

日期:{
{ date.year }}

类对象列表:{
{ person_list.0.name }}

注意:句点符也可以用来引用对象的方法(无参数方法):
  <h4>字典:{
{ dic.name.upper }}<
/
h4>
 

 

转载于:https://www.cnblogs.com/zgd1234/p/7988000.html

你可能感兴趣的文章
架构必备词汇
查看>>
SublimeText快捷键操作
查看>>
Python开发 基礎知識 (未完代補)
查看>>
监听器的使用,以及实现, 测试
查看>>
java基础二 分支循环
查看>>
python--002--数据类型(list、tuple)
查看>>
把近期的小错误整理一下
查看>>
动态规划 —— 背包问题一 专项研究学习
查看>>
51nod 1571 最近等对 | 线段树 离线
查看>>
关于parseInt的看法
查看>>
从用户端到后台系统,严选分销教会我这些事
查看>>
数据分析融入至BI工具的新思路
查看>>
c#必会知识点
查看>>
网页使用MD5加密
查看>>
JS 基础
查看>>
HBase shell 中的十六进制数值表示
查看>>
Python3 中 configparser 模块解析配置的用法详解
查看>>
新手android环境搭建、debug调试及各种插件安装__图文全解
查看>>
未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 win2008R2 X64 IIS7.5
查看>>
Diffuse贴图+Lightmap+Ambient
查看>>