码迷,mamicode.com
首页 > 其他好文 > 详细

django开发课程02

时间:2020-09-08 20:50:46      阅读:44      评论:0      收藏:0      [点我收藏+]

标签:response   let   异常   复用   war   填充   method   print   请求   

#pycharm设置项目为diango工程:setting-Diango下设置工程路径,  edit-Configurations下加一个diango-server,设置成jiango就可以直接运行项目了
技术图片

 

 

# views:获取请求数据
1-先写views,id是前端传入的请求参数

def
category(request,id): categories = models.Catagory.objects.all() articles = models.Article.objects.filter(category_id=id) return render(request,category.html,{categories:categories,articles:articles})

2-配置urls
path(‘category/<int:id>‘, views.category)  #传入参数:id

3-html前端配置跳转链接
技术图片

 

#models-多表操作--外键反向查询
#models中加入 __str__,优化查询结果 
def __str__(self): return self.title

#一对多查询,obj.article_set.all() #取数量 obj.article_set.count() #根据条件查 obj.article_set.filter(is_delete=False)
c_obj = models.Catagory.objects.get(name=‘java‘)
print(c_obj.article_set.all()) == #models.Article.objects.filter(category=c_obj)

#前端页面继承

#新建一个html、把公共部分复制、私有部分用以下格式填充    

{% block content %} {% endblock %}

#把原html公共部分全部删除,继承公共html,保留私有部分,用以下格式填充
{% extends ‘base.html‘ %}{% block content %}

<div>
content内容
</div>
{% endblock %}

#后端复用,上下文处理器

#子项目下先新建一个公共py文件,从views中把复用的数据拿出来, 在views中把公共部分删除
from
. import models def process_category(request): print(上下文管理器,自己写的) categories = models.Catagory.objects.all() return {categories:categories}

#再在setting-TEMPLATES-OPTIONS中加入:例‘user.content_process.process_category‘

执行顺序:先执行views、有上下文管理器配置,再走上下文管理器中的代码

上下文管理器可以写多个

#前后端交互

#views先写逻辑处理
request.method 请求方式
request.GET.get(‘key‘) get请求参数
request.POST.get(‘key‘) post请求参数
request.COOKIES.get(‘key‘) cookie
request.path_info 请求路径
request.META 请求头数据


def
article(request): if request.method == GET: return render(request,post.html) #get请求返回页面 else: title = request.POST.get(title) #post请求获取请求数据写入数据库 content = request.POST.get(content) category = request.POST.get(category) models.Article.objects.create(title=title,content=content,category=category) return {code:0}


#前端写一个html向后端接口发起请求

# 中间件

client进来->url->views->上下文处理器-response返回,  中间件在urls之前处理

#子项目下创建一个python文件:middle_wares.py ,在setting-MIDDLEWARE 下导入
from
django.middleware.common import MiddlewareMixin

class TestMiddleWare(MiddlewareMixin):

def process_request(self,request): #请求过来先走到这里
print(‘request...‘)


def process_response(self,request,response): #拦截返回
print(‘response...‘)
return response

def process_exception(self,request,exception): #拦截异常,views中出异常了走到这里
print(出异常了...‘)
执行顺序:client->中间件->views->上下文处理器->返回正常response->中间件-client
request... (中间件)
index... (views)
上下文管理器,自己写的 (上下文)
response... (中间件)

#mock平台快速开发

思路:使用中间件,获取请求接口路径、查询数据库,直接返回

#先创建接口信息表,用来存放接口信息
class
Interface(models.Model): name = models.CharField(verbose_name=接口名称,max_length=50) path = models.CharField(verbose_name=接口路径,max_length=60,unique=True) response = models.TextField(verbose_name=返回数据) class Meta: db_table = interface verbose_name = 接口 verbose_name_plural = verbose_name def __str__(self): return self.name

#写前端html,前端添加接口信息

#中间件middle_wares.py文件处理:
class TestMiddleWare(MiddlewareMixin):

def process_request(self,request): #请求过来先走到这里
path = request.path_info #先拿到请求路径
interface = models.Interface.objects.filter(path= path).first() #查询数据库
if interface:
return HttpResponse(interface.response)

 

 

django开发课程02

标签:response   let   异常   复用   war   填充   method   print   请求   

原文地址:https://www.cnblogs.com/whcp855/p/13559292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!