【问题标题】:How to add parameters to the homepage URL in Django如何在 Django 中向主页 URL 添加参数
【发布时间】:2016-07-09 10:13:42
【问题描述】:

我有一个单一流程引导模板,其中包含“关于”、“联系人”等所有部分作为单个文件的一部分。问题出在菜单栏上,因为我使用 django 的模板继承来包含菜单栏(在 home_menubar.html 中声明),并且我在所有网页中使用 {% include 'home/home_menubar.html' %} 行作为菜单栏。

问题是我必须为菜单栏中的所有类别声明特定的 url,以便呈现相同的 HTML 文件以显示页面中的特定部分,就像我想访问 about 列一样。网址为localhost:8000/about/#aboutus

那个 URL 看起来让我恶心。有什么办法可以让网址变成localhost:8000/#aboutus ??

更新 1: 我在许多网页中使用home_menubar.html 文件,例如 login.html、register.html 等。所以如果我发出

  • About
  • ,然后在此 URL:localhost:8000/login/ 中单击 About 菜单项,它变为不存在的 localhost:8000/login/#about

    一些代码:

    home_menubar.html

    {% load staticfiles %}
    <nav class="navbar navbar-inverse navbar-fixed-top" style="font-family: 'Open Sans';">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a href="{% url 'web_root' %}" class="navbar-brand"><img src="{% static 'home/images/logo.png' %}" alt="company logo" /></a>
            </div>
    
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav navbar-right custom-menu">
                    <li><a href="{% url 'about' %}">About</a></li>
                    <li><a href="{% url 'benefits' %}">Benefits</a></li>
                    {% ifnotequal events_obj None %}
                    <li><a href="{% url 'upevents' %}">Upcoming Events</a></li>
                    {%endifnotequal%}
                    <li><a href="{% url 'contactus' %}">Contact</a></li>
                </ul>
            </div>
        </div>
    </nav>
    

    views.py:

    def show_homepage(request):
            return render(request,'home/homepage.html')
    
    def view_about(request):
            return render(request,'home/homepage.html',{'goto':'about'})
    
    def view_benefits(request):
            return render(request,'home/homepage.html',{'goto':'benefits'})
    
    def view_upevents(request):
            return render(request,'home/homepage.html',{'goto':'upevents'})
    

    urls.py

        url(r'^$', views.show_homepage,name="web_root"),
        url(r'^benefits/', views.view_benefits,name="benefits"),
        url(r'^upevents/', views.view_upevents,name="upevents"),
        url(r'^about/', views.view_about,name="about"),
    

    【问题讨论】:

      标签: python django django-templates django-views django-urls


      【解决方案1】:

      我完全不明白你为什么要复制视图...

      为什么不只拥有一个主页视图:

      def show_homepage(request):
          return render(request, 'home/homepage.html')
      

      附带 URL:

      url(r'^$', views.show_homepage, name="web_root"),
      

      然后在home_menubar.html

      <ul class="nav navbar-nav navbar-right custom-menu">
          <li><a href="/#about">About</a></li>
          <li><a href="/#benefits">Benefits</a></li>
          {% ifnotequal events_obj None %}
          <li><a href="/#upevents">Upcoming Events</a></li>
          {%endifnotequal%}
          <li><a href="/#contactus">Contact</a></li>
      </ul>
      

      【讨论】:

      • 它可以在我包含模板文件的任何网页中工作吗?比如登录页面什么的?
      • 我已经更新了代码,以便它可以在这种情况下工作。或者,您可以使用以下内容来确保它在任何地方都能正常工作:&lt;a href="{% url 'web_root' %}#about"&gt;About&lt;/a&gt;
      • 做到了。非常感谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 2012-12-22
      相关资源
      最近更新 更多