转到下一条路线Django时总是加双链接

问题描述 投票:0回答:1

我从Django制作仪表板。当我单击以更改路线时,它总是会添加更多链接。例如,仪表板的链接为127.0.0.1:8000/dashboardenter image description here当我单击更改为另一个路线示例配置文件时,链接变为127.0.0.1:8000/dashboard/pages/user-profile.htmlenter image description here然后,当我转到下一条路线时,它总是加上页面/看我在图片中的链接enter image description here这是我的代码

dashboard / urls.py

from django.conf.urls import  url, re_path
from django.urls import path
from . import views
urlpatterns = [
    url(r"^$", views.index, name="index"),
    re_path(r'^.*\.html', views.pages, name='pages'),
]

dashboard / views.py

from django.template.response import TemplateResponse
from django.contrib.admin.views.decorators import (
    staff_member_required as _staff_member_required
)
from django.shortcuts import  redirect
from django.template import loader
from django.http import HttpResponse
def staff_member_required(f):
    return _staff_member_required(f, login_url="accounts:login")

@staff_member_required
def index(request):
    if request.user.is_superuser:
        context = {"active":"dashboard"}
        return TemplateResponse(request, "dashboard/index.html",context=context)
    else:
        return redirect("home")

@staff_member_required
def pages(request):
    context = {}
    try:
        load_template = request.path.split('/')[-1]
        print(request.path.split('/'))
        template = loader.get_template('dashboard/pages/' + load_template)
        print(template)
        return HttpResponse(template.render(context, request))

    except:
        template = loader.get_template( 'dashboard/pages/error-404.html' )
        return HttpResponse(template.render(context, request))

这是我的模板文件

templates / dashboard / includes / sidebar.html

    <aside class="main-sidebar col-12 col-md-3 col-lg-2 px-0">
        <div class="main-navbar">
          <nav class="navbar align-items-stretch navbar-light bg-white flex-md-nowrap border-bottom p-0">
            <a class="navbar-brand w-100 mr-0" href="https://appseed.us/admin-dashboards/django-dashboard-shards" style="line-height: 25px;">
              <div class="d-table m-auto">
                <img id="main-logo" class="d-inline-block align-top mr-1" style="max-width: 25px;" src="/static/assets/img/shards-dashboards-logo.svg" alt="Shards Dashboard">
                <span class="d-none d-md-inline ml-1">Django Shards Dashboard</span>
              </div>
            </a>
            <a class="toggle-sidebar d-sm-inline d-md-none d-lg-none">
              <i class="material-icons">&#xE5C4;</i>
            </a>
          </nav>
        </div>
        <form action="#" class="main-sidebar__search w-100 border-right d-sm-flex d-md-none d-lg-none">
          <div class="input-group input-group-seamless ml-3">
            <div class="input-group-prepend">
              <div class="input-group-text">
                <i class="fas fa-search"></i>
              </div>
            </div>
            <input class="navbar-search form-control" type="text" placeholder="Search for something..." aria-label="Search"> </div>
        </form>

        {% if user.is_superuser %}
          <div class="nav-wrapper">
            <ul class="nav flex-column">
              <li class="nav-item">
                <a class="nav-link active" href="/dashboard">
                  <i class="material-icons">edit</i>
                  <span>Dashboard</span>
                </a>
              </li>
              <li class="nav-item">
                <a class="nav-link " href="pages/blog-posts.html">
                  <i class="material-icons">vertical_split</i>
                  <span>Blog Posts</span>
                </a>
              </li>
              <li class="nav-item">
                <a class="nav-link " href="pages/new-post.html">
                  <i class="material-icons">note_add</i>
                  <span>Add New Post</span>
                </a>
              </li>
              <li class="nav-item">
                <a class="nav-link " href="pages/ui-components.html">
                  <i class="material-icons">view_module</i>
                  <span>Forms &amp; Components</span>
                </a>
              </li>
              <li class="nav-item">
                <a class="nav-link " href="pages/ui-tables.html">
                  <i class="material-icons">table_chart</i>
                  <span>Tables</span>
                </a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="pages/user-profile.html">
                  <i class="material-icons">person</i>
                  <span>User Profile</span>
                </a>
              </li>
              <li class="nav-item">
                <a class="nav-link " href="pages/page-500.html">
                  <i class="material-icons">error</i>
                  <span>Error 500</span>
                </a>
              </li>
            </ul>
          </div>
        {% endif %}

    </aside>

templates / dashboard / layouts / base-site.py

<!doctype html>
<html class="no-js h-100" lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <link rel="shortcut icon" href="/static/assets/img/favicon.png" />

    <title>
      Dashboard
    </title>

    <meta name="description" content="A high-quality &amp; free Bootstrap admin dashboard template pack that comes with lots of templates and components.">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link href="https://use.fontawesome.com/releases/v5.0.6/css/all.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <link rel="stylesheet" id="main-stylesheet" data-version="1.1.0" href="/static/assets/css/shards-dashboards.1.1.0.min.css">
    <link rel="stylesheet" href="/static/assets/css/extras.1.1.0.min.css">
    <script async defer src="https://buttons.github.io/buttons.js"></script>

  </head>
  <body class="h-100">

    <div class="color-switcher-toggle animated pulse infinite">
      <i class="material-icons">settings</i>
    </div>

    <div class="container-fluid">
      <div class="row">

        {% include 'dashboard/includes/sidebar.html' %}

        <main class="main-content col-lg-10 col-md-9 col-sm-12 p-0 offset-lg-2 offset-md-3">

          {% include 'dashboard/includes/navigation.html' %}

          {% block content %}{% endblock content %}

          {% include 'dashboard/includes/footer.html' %}

        </main>
      </div>
    </div>

    {% include 'dashboard/includes/footer-popup.html' %}

    {% include 'dashboard/includes/scripts.html' %}

    <!-- Specific Page JS goes HERE  -->
    {% block javascripts %}{% endblock javascripts %}

  </body>
</html>
python django django-views django-urls
1个回答
1
投票

这是一个快速修复,问题在您的emplates / dashboard / includes / sidebar.html模板文件中。您的所有网址都是相对的,因为它们没有前导/以便使它们在您的域路由中起作用,在您的情况下,这意味着它们应该以/ dashboard /开头。

尽管通常您希望使用内置的URL模板标记(https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#url)动态地构建URL,以便它们使用您的URL调度值来产生最终的URL

© www.soinside.com 2019 - 2024. All rights reserved.