首页 > 编程语言 >Python全栈工程师(42:Web框架Django步骤)

Python全栈工程师(42:Web框架Django步骤)

时间:2023-06-27 20:32:30浏览次数:52  
标签:Web name index Python 42 views request url user


1.创建Django工程

django-admin startproject 工程名

2.创建app

cd 工程名

python manage.py startapp cmdb

3.静态文件

project.settings.py

  1. STATICFILES_DIRS = (  
  2. 'static'),  
  3.     )  

4.模板路径

  1. TEMPLATE_DIRS = (  
  2. 'templates'),  
  3.     )  

5.settings中

middlerware  #注释 csrf

6.定义路由规则(路由系统URL)

(1) url(r'^index/',views.index),

(2)url(r'^home/',views.Home.as_view()),

(3)url(r'^detail-(\d+).html',views.detail),   

    def detail(request,nid):

(4) url(r'^index-(\d+nid)-(\d+uid).html/',views.index),

def index(request,nid,uid)#一一对应

(5)url(r'^index/(?P<nid>\d+/(?P<uid>\d+)/',views.index),


def index(request,*args,**kwargs):  #分别对应args--nid和kwargs--uid


(6)name:对url路由关系进行命名,以后可以根据此名称生成自己想要的url

url(r'^abc/',views.index,name='index1',)--->对应模板语言 {%url "index1"%}

url(r'^abc/(\d+)/',views.index,name="index1")-->对应模板语言{%url "index1" 3%}  #生成固定


注:

html表单里面的action :{{request.path_info}}

(7)name

from django.utls import reverse

reverse('indexs',args=(90,))或reverse('indexs',kwargs={"nid":1,"uid":2})

eg:

url(r'^abc/',views.index,name='i1',),

url(r'^yug/(\d+)/(\d+)/',views.index,name="i2"),

url(r'^buy/(?P<pid>\d+/(?P<nid>\d+)/',views.index,name='i3'),


def func(request,*args,**kwargs):

    from django.urls import reverse

url1 = reverse('i1') #abc/

url2 = reverse('i2',args=(1,2))  #yug/1/2/

url3 = reverse('i3',kwarge={'pid':1,'nid':2}) #buy/1/9/


xxx.html

{%url "i1%" }   #abc/

{%url "i2 1 2%" }  #yug/1/2

{%url "i3" pid=1 nid=9 %}  #buy/1/9/

(8)路由分发:多个app时

url(r^'app01/',include("app01.urls")),

url(r^'app02/',include("app02.urls")),

(9)默认值

(10)命名空间

7.定义视图函数

app下views.py

获取数据:

def fun(request):
     #request.method  GET/POST
    #http://127.0.0.1:8009/home?nid=123&name=julia
    #request.GET.get('',None)  获取请求发来的数据
    #request.POST.get('',None)

返回数据:

#return HttpResponse('字符串')
    #return render(requets,'HTML模板的路径',{‘ ’})
    #return redirect('/只能填url')  #只能传url前面的路径,不能直接传模板

补充:

request.GET
request.POST
request.FILES  #获取文件请求
request.POST.getlist()   #获取checkbox等多选的内容
#上传文件

form里面必须设置: enctype=“multipart/form-data”

obj = request.FILES.get('文件名')
obj.name
f =open(obj.name,mode='wb')
for item in obj.chunks():
    f.write(item)
f.close()

函数vs类:

FBV&CBV
function base view
url.py
    index-->函数名
view.py
    def 函数(request):
==>
/index/ -->函数名
/index/ --> 类 (基层views)

建议连着都用

8.模板渲染

特殊的模板语言

{{变量名}}

def func(request):

    return render(request,"index.html",{'current_user':"julia"})

index.html

<html>

..

<body>

    <div>{{current_user}}</div>

</body>

</html>

==>最后生成

<html>

..

<body>

    <div>julia</div>

</body>

</html>

--for循环、if、

def func(request):

    return render(request,"index.html",{'current_user':"julia",'user_list':['alex','eric'],'user_dict':{'k1':'v1','k2':'v2'}})

index.html

...

{% for row in user_list%}

    <li>{{row}}</li>

{%endfor%}

<a>{{user_list.1}}</a>

<a>{{user_dict.k1}}</a>


标签:Web,name,index,Python,42,views,request,url,user
From: https://blog.51cto.com/u_12667998/6565462

相关文章

  • Python | 魔法函数`__iter__`的用法
    下面是找到的一个比较好的科学解释:Python中可迭代对象(Iterable)并不是指某种具体的数据类型,它是指存储了元素的一个容器对象,且容器中的元素可以通过__iter__()方法或__getitem__()方法访问。__iter__方法的作用是让对象可以用for…inobj循环遍历,__getitem__()方法是......
  • Python | 魔法函数`__contains__`的用法
    在python的字符串、列表、元组、结合等对象的时候,经常使用in的方法,一个类的对象能够使用in,就是因为这个类实现了__contains__魔法函数如下面的代码,演示了类的对象使用in的情形classStudent():def__init__(self,name):self.name=namedef__contains__(self......
  • Python | 魔法函数`__str__`的用法
    __str__是Python内置函数,用于将对象转换为字符串表示形式。在Python中,每个类都可以重写__str__方法,以便自定义对象的字符串表示形式。当使用print函数将对象输出到控制台时,Python会自动调用对象的__str__方法,将其转换为字符串并输出到控制台。因此,对于一个自定义的类......
  • Python | 魔法函数`__len__`的用法
    在python的字符串、列表等元素的时候经常使用len()方法计算长度,之所以能够使用len()方法,就是因为它的类实现了__len__魔法函数如:classStudent():def__init__(self,name):self.name=namedef__len__(self):returnlen(self.name)s=Student("Jack......
  • Python 选择排序
    思路:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾重复第二步,直到所有元素均排序完毕 Code:1defselectSort(arr):2foriinrange(0,len(arr)):#i表示多少......
  • 全栈测试开发系列----WebDriver API及对象识别技术(一)
    前言:WebDriverAPI相比于之前的selenium-RCAPI而言,不仅解决了一些相关的限制,还使得接口更加简洁,同时更好的支持了页面本身不重新加载而页面元素发生变化的动态网页,所以WebDriverAPI的实现目的不仅是提供一个良好的面向对象API,而且对Web应用程序测试过程中所产生的问题......
  • 10 家世界顶级的公司都在用 Python 做什么?
    https://towardsdatascience.com/10-world-class-companies-using-python-26cde24919a8用Python写代码的乐趣在于它可以使用简短、简洁、可读性高的类,用少量清晰的代码表达了大量的操作,避免了很多琐碎的代码。-GuidovanRossum在当下,很多公司都在使用数字工具管理他们的各个方......
  • 10 个最值得 Python 新人练手的有趣项目
    作者| ClaireD.Costa编译|Wendy有很多Python新手留言问:“Python入门很久了,但项目经验很少,有没有什么项目,可以让自己实践一下呢?”这是个很普遍的问题,首先你要想好做什么类别的项目,总体来说,项目分为三类:Web构建一个Web应用发布在网络上让用户访问使用。需要实现Web应用......
  • Python高阶基础之面向对象介绍
    面向过程'''在支持面向对象的语言中,有两大范式:1、面向过程,2、面向对象'''#这两大范式,它是一种编程思想面想过程:核心就是过程,先做什么>>>>>再做什么>>>>>最后干什么 即机械式思维方式,类似于流水线工程举例: '把苹果放到冰箱'1、打开冰箱2、把苹果放进去3、......
  • Python高阶基础之绑定办法、非绑定方法、隐藏属性、装饰器
    绑定办法'绑定给类的办法''绑定给对象的办法'#绑定给对象classStudent:school='SH'def__init__(self,name,age,gender):self.name=nameself.age=ageself.gender=gender #这个就是绑定给对象的方法,有什么特殊之处?1.......