Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中创建通用视图_Python_Django - Fatal编程技术网

Python 在Django中创建通用视图

Python 在Django中创建通用视图,python,django,Python,Django,好吧,我是Django的新手,但不熟悉MVC世界(在Grails中构建了一些应用程序)……但我似乎和一群人有着同样的问题,我希望有人能真正了解Django基于类的通用视图。在Grails世界中,框架可以生成“模板”或通用视图,我相信Django也是如此,但如果您遵循1.7“编写第一个Django应用程序”,那么似乎缺少了一些特殊的魔力 我有以下项目/应用程序结构: mysite ->mysite ->settings.py -&g

好吧,我是Django的新手,但不熟悉MVC世界(在Grails中构建了一些应用程序)……但我似乎和一群人有着同样的问题,我希望有人能真正了解Django基于类的通用视图。在Grails世界中,框架可以生成“模板”或通用视图,我相信Django也是如此,但如果您遵循1.7“编写第一个Django应用程序”,那么似乎缺少了一些特殊的魔力

我有以下项目/应用程序结构:

mysite
     ->mysite
           ->settings.py
           ->urls.py
           ->_init_.py
           ->wsgi.py
      ->polls (my app)
            ->models.py
            ->urls.py
            ->views.py
            ->templates
                ->polls
在本教程中,我们被要求在templates->polls目录中创建index.html、details.html、results.html文件,这些文件中有一些简单的html视图。这一切都很好。一旦我在中开始“使用通用视图:代码越少越好”,我就会遇到麻烦。假设我应该简单地从templates文件夹中删除index.html、details.html、results.html文件,并且Django应该动态生成视图,这是错误的吗?我认为这是一般观点的观点,但现在我不确定。当我删除视图时,会出现templatedoesnotexist错误。我是否需要对我的settings.py做些什么,让它知道我希望django生成视图?以下是标准生成的设置(我就是这么做的),我假设这些设置足以执行默认行为

 import os
 BASE_DIR = os.path.dirname(os.path.dirname(__file__))
 TEMPLATE_DEBUG = True

 TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates/'),]

如果您需要我提供更多信息,请让我知道,但基本上我想知道我是否偏离了Django从模板生成视图的假设?谢谢大家!

你只是对Django的术语有点困惑。几乎所有视图都使用模板来呈现发送回浏览器的实际标记(HTML、XML等)

Django泛型视图只是编写自己的函数视图的基于类的版本。因此,与其说:

def show_template_with_data(request):
    template = "myapp/show_data.html"
    return render(request, template, {'data1': 1, 'data2': 2})
您可以使用Python类和OO并执行以下操作:

class ShowTemplateWithData(TemplateView):
    template_name = "myapp/show_data.html"

    def get_context_data(self, **kwargs):
        context = super(ShowTemplateWithData, self).get_context_data(**kwargs)
        context['data1'] = 1
        context['data2'] = 2
        return context 
这两个是等价的,一个只是使用函数,另一个是基于类的视图

在Django中,视图是确定所采取的操作、为模板提供的数据(例如,基于登录用户)等的代码。“模板”只是带有显示它的占位符/循环等的HTML


但是不,您不应该删除模板HTML文件,这两种样式的视图都需要它们。

谢谢您,弗兰克!我认为Django可能是自动生成的(比如grails生成所有mydomainclass),谢谢您的澄清。非常感谢!!!