【问题标题】:Stop Concatenating HTML hrefs to address bar停止将 HTML href 连接到地址栏
【发布时间】:2020-04-29 02:10:43
【问题描述】:

我有一个带有一些按钮的btn-group,每个按钮都会指向不同的页面。 btn-group 将在每个页面上可见。

这是btn-group的html,


        <div class="btn-group-lg text-center" role="group" aria-label="Basic example">

            <a class="btn btn-outline-primary" href="" role="button">Home</a>
            <a class="btn btn-outline-primary" href="view_schedule/" role="button">Schedule</a>
            <a class="btn btn-outline-primary" href="view_syllabus/" role="button">Syllabus</a>
            <a class="btn btn-outline-primary" href="view_records/" role="button">Records</a>
            <a class="btn btn-outline-primary" href="view_achievements/" role="button">Achievements</a>
            <a class="btn btn-outline-primary" href="view_gallery/" role="button">Gallery</a>
            <a class="btn btn-outline-primary" href="view_contact/" role="button">Contact</a>
            <a class="btn btn-outline-primary" href="about/" role="button">About Us</a>

        </div>

但每当我按下按钮时,它都会修改地址栏中的 URL。 示例:- 从http://127.0.0.1:8000/shotokankaratebd/ 开始,如果我按下计划按钮,它会将 URL 更改为 http://127.0.0.1:8000/shotokankaratebd/view_schedule

之后,如果我再次按计划按钮,它会将其更改为 http://127.0.0.1:8000/shotokankaratebd/view_schedule/view_schedule,这是一个无效的 URL,我会收到错误消息。

我该如何编写,以便每当按下按钮时,只影响http://127.0.0.1:8000/shotokankaratebd/之后的部分?

已编辑以包含新的 href:


            <a class="btn btn-outline-primary" href="../shotokankaratebd/" role="button">Home</a>
            <a class="btn btn-outline-primary" href="../shotokankaratebd/view_schedule/" role="button">Schedule</a>
            <a class="btn btn-outline-primary" href="../shotokankaratebd/view_syllabus/" role="button">Syllabus</a>
            <a class="btn btn-outline-primary" href="../shotokankaratebd/view_records/" role="button">Records</a>
            <a class="btn btn-outline-primary" href="../shotokankaratebd/view_achievements/" role="button">Achievements</a>
            <a class="btn btn-outline-primary" href="../shotokankaratebd/view_gallery/" role="button">Gallery</a>
            <a class="btn btn-outline-primary" href="../shotokankaratebd/view_contact/" role="button">Contact</a>
            <a class="btn btn-outline-primary" href="../shotokankaratebd/about/" role="button">About Us</a>

【问题讨论】:

  • 你试过../吗?
  • 我刚试过。但是,如果我按下 Home 按钮以外的任何东西,同样的问题仍然存在。我已编辑问题以包含新的 href。

标签: javascript html css django twitter-bootstrap


【解决方案1】:

您不应该对您的网址进行硬编码。使用django's url template tag 为您的视图获取网址。

【讨论】:

    【解决方案2】:

    解决了。 我需要做的就是用 / 开始我的 href,这会在每次单击按钮后将 url 重置回 http://127.0.0.1:8000/

    HTML按钮如下:

            <div class="btn-group-lg text-center" role="group" aria-label="Basic example">
    
                <a class="btn btn-outline-primary" href="/shotokankaratebd/" role="button">Home</a>
                <a class="btn btn-outline-primary" href="/shotokankaratebd/view_schedule/" role="button">Schedule</a>
                <a class="btn btn-outline-primary" href="/shotokankaratebd/view_syllabus/" role="button">Syllabus</a>
                <a class="btn btn-outline-primary" href="/shotokankaratebd/view_records/" role="button">Records</a>
                <a class="btn btn-outline-primary" href="/shotokankaratebd/view_achievements/" role="button">Achievements</a>
                <a class="btn btn-outline-primary" href="/shotokankaratebd/view_gallery/" role="button">Gallery</a>
                <a class="btn btn-outline-primary" href="/shotokankaratebd/view_contact/" role="button">Contact</a>
                <a class="btn btn-outline-primary" href="/shotokankaratebd/about/" role="button">About Us</a>
    
            </div>
    

    【讨论】:

    • 你的答案在 Django 中仍然是错误的方法。上面的答案是在模板中包含 url 的正确方法!
    【解决方案3】:

    如果您的 url 指向另一个视图或另一个应用程序的视图,您应该使用 django 使用动态 url 的功能。

    例如,如果你有一个视图view_schedule,你应该在 urls.py 中给它一个名字

    urlpatterns = [
    ...
    path('shotokankaratebd/view_schedule/', views.name_of_your_view, name=view_schedule),
    ...
    ]
    

    无论何时何地,如果您想访问此视图,您只需键入即可

    模板.html

    <a href="{% url 'view_schedule' %}"><button>Schedule</button></a>
    

    而不是

     class="btn btn-outline-primary" href="/shotokankaratebd/view_schedule/" role="button">Schedule</a>
    

    这样硬编码。

    【讨论】:

    • 这里的view_schedule是指path()中name的参数吗?还是指视图函数本身的名称?
    • 它指的是您在 urls.py 中给出的名称,而不是视图(函数)。
    猜你喜欢
    • 2014-01-04
    • 2012-04-25
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2013-12-08
    • 2011-06-29
    相关资源
    最近更新 更多