如何使用Django在网站中的不同页面之间路由

4bbkushb  于 2023-07-01  发布在  Go
关注(0)|答案(1)|浏览(147)

我想建立一个网站来练习,其中我想做一个主页,其中将有两个类别在水平方向,让他们命名为“窗口”和“Linux”,我只是想显示有关窗口的文本时,用户点击窗口按钮和文本有关Linux时,用户点击Linux按钮。据我所知,我需要创建两个应用程序,称为windows和linux与他们各自的模板文件和主模板文件在rot文件夹,将工作像主页,但我无法把所有作为im新的django在一起。我已经附上了我希望我的网站看起来像一个演示图片。

我只有两个html文件的windows和linux应用程序,我无法合并它与主模板文件。

ncgqoxb0

ncgqoxb01#

在Django中,要从一个页面转到另一个页面,通常会从视图中返回HttpResponseRedirect的示例。有一个名为redirect的快捷方式,它更容易编码。例如,在基于类的FormView中:

def form_valid(self, form):
    # do stuff
    return HttpResponseRedirect( 
        reverse( 'app:view_name', kwargs={
            'key': value, ...
    })

    # or,

    return redirect( 'app:view_name', key=value, ...)

但是,如果您想从一个GET视图导航到另一个GET视图,只需在模板中编写一个<a href="...">。因此,对于上面的Widows和Linux按钮,您可以将其放在模板中

<a href="{% url 'myapp:view_name' key=value ... %}">
   <button type="button" class="css-class">Linux</button>
</a>

点击这个按钮会将你链接到Django应用程序myapp所服务的页面,该页面的url名为view_name,其关键字参数在{%url标签中指定。
(To在学习的时候,你可以简单地硬编码href而不是使用{% url ...
除非这是更大的东西的开始,否则你不需要两个应用程序,甚至两个视图。您可以使用一个TemplateView和一个os kwarg来完成所有操作,以指示在底部面板中显示哪组信息。

path( 'home', MyView.as_view(), name='home'),
path( 'os/<str:os>',   MyView.as_view(), name='osview')

在视图中,找出self.kwargs ['os']是否存在(如果不存在,则为主视图),如果存在,则会显示是显示windows还是linux信息。

相关问题