【问题标题】:Django: Loading another template on click of a buttonDjango:单击按钮加载另一个模板
【发布时间】:2023-04-10 05:34:01
【问题描述】:

我已经在一个 django 项目上工作了几个星期,只是在玩玩,以便掌握它的窍门。我有点困惑。我现在有一个名为“home.html”的模板。我想知道是否有另一个名为“profile.html”的模板设置为 home.html 模板上的链接?我有一个按钮,当我点击它时,应该直接将我带到 profile.html 页面,但是当我对这个主题进行研究时,我得到的答案好坏参半。有些人说要创建一个视图并使用 javascript 加载 html,而另一些人则表示只在标签中编写第二页模板的路径会更容易。

完成这项工作的最正确方法是什么?

我查看了这个链接:Rendering another template from a button click in Django 试图更好地理解,因为这是另一个最接近我所问的问题,但它让我更加困惑,因为 django 术语有点令人困惑我作为初学者理解。

提前感谢您提供的任何帮助。


编辑总结一下:我目前在主页上。有一个按钮显示“查看您的个人资料”。单击该按钮后,我想离开主页并在屏幕上加载新页面“profile.html”。

【问题讨论】:

  • 要了解您的问题,您想使用另一个模板链接到另一个页面吗?或者您想在当前页面中加载第二个模板?
  • @BelowtheRadar 我想单击一个按钮并加载一个全新的页面,新页面是一个模板。这更清楚吗?为混乱道歉。
  • 我不敢相信您已经看到任何答案说您可以直接编写模板的路径。那根本行不通。
  • @DanielRoseman 是的,哈哈,经过几次尝试和错误尝试,最终陷入了困境。

标签: jquery python html django templates


【解决方案1】:

“最正确的方法”是创建将加载您的“profile.html”模板的视图。我建议使用通用的TemplateView

将此行添加到您的 urls.py

from django.views.generic import TemplateView

urlpatterns = patterns('',
    url(r'^profile/', TemplateView.as_view(template_name='profile.html'),
                      name='profile'),
)

home.html 中使用这个 sn-p:

<a href="{% url 'profile' %}">Profile</a>

【讨论】:

  • 嗯,它正在返回:无效的块标签:''profile'',预期为 'empty' 或 'endfor'
  • 您在哪里收到此消息 - 在主页或“/profile/”网址?显示对应模板的代码。
  • 意思是我在概要第 6 行的 profile.html 文件中收到消息:gist.github.com/anonymous/bbc495f6b256112a263c
  • 你应该写{% url 'profile' %} 而不是{% 'profiles' %}
  • 太棒了!有效。最后一个问题只是为了确保我理解。为什么我不必在 views.py 文件中添加任何内容就可以让它工作?
【解决方案2】:

除了使用 TemplateView,你也可以只拥有

<a href="{% url 'profile' %}">View your profile</a>

在您的主页模板中。在您项目的主 urls.py 中添加您的个人资料模板的 url。

url_patterns = [
        url(r'profile/',profile_view,name="profile")
]

在views.py 中有一个定义为profile_view 的函数。 然后链接将起作用:)

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 2015-08-07
    • 2019-07-16
    • 2019-07-30
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2015-09-07
    相关资源
    最近更新 更多