Django学习小结-MTV

跟着视频敲了两个星期了,感觉很多地方都是似懂非懂,django搭建出来的项目到底是怎么运行的?数据是怎么流通的?
1.一开始以为django是基于MVC的三层架构,大体运行思路应该是:

Django学习小结-MTV_第1张图片
image.png

2.Model,Control,View分别对应django中的什么?
django是基于app开发的,在新建一个app后,系统自动生成了很多文件,其中就有:model和View:
新建app:点击工具栏Tool->Run manage.py Task,输入startapp +app的名称(我这里叫firstapp),最后回车
Django学习小结-MTV_第2张图片
image.png

在工程目录下,就会出现firstapp文件,展开后可以看到以下文件:
Django学习小结-MTV_第3张图片
image.png

model.py对应Model层,view.py对应View层.....那Control层谁对应呢?
百思不得其解,最后上网百度了一下,原来django是基于MTV的。
即:Model,Template,View。
Model:对象和数据库的关系映射(ORM),model.py中数据库一张表对应一个class
Template:存放html页面,负责数据展示。
View:负责业务逻辑。
那么,整个数据的业务流程应该是如下这样的:
Django学习小结-MTV_第4张图片
image.png

3.我输入网址后,view.py中的类是怎么和网址中的地址关联起来的?
如:输入 http://127.0.0.1:8000/TestView/是如何找到view中的TestView(View)类
image.png

class TestView(View):
    def get(self,request):
        return render(request,'Test.html')

答案是通过urls.py中的url设置来实现网址和view类的关联,urls.py中保存了url与view的映射。
如下图中 url(r'^TestView/', TestView.as_view()),第一个参数是一个正则表达式,即匹配网址中含有TestView/的网址,第二个参数就是view中的类调用as_view()方法。


Django学习小结-MTV_第5张图片
image.png

那么现在的流程图应该是:


Django学习小结-MTV_第6张图片
image.png

4.现在已经可以找到view,那么view是怎么把数据传给Template,同样Template又是如何把数据传个view的?
1)Template通过request请求来向view传递数据。

{% for key,error in TestForm.errors.items %}{{ error }}{% endfor %}
{% csrf_token %}

form通过method属性指明post方法接收,action通过url的name指明哪个url进行分发。

class TestView(View):
   def get(self,request):
       return render(request,'Test.html')
   def post(self,request):
       email=request.POST.get('email')
       print(email)

request.POST.get('email'),get()方法参数为input标签的name属性值


Django学习小结-MTV_第7张图片
image.png

Django学习小结-MTV_第8张图片
image.png

2)view怎么把数据传回html页面?
通过render()

 return render(request, 'Test.html',{'msg' :'hello world'})

在Test.html中任意地方使用

{{ msg}}

就可以显示hello world。




    
    Title


{{ msg}}

Django学习小结-MTV_第9张图片
image.png

现在流程图应该是:


Django学习小结-MTV_第10张图片
image.png

你可能感兴趣的:(Django学习小结-MTV)