【问题标题】:Why is my href generating # in the url in Django Python?为什么我的 href 在 Django Python 的 url 中生成 #?
【发布时间】:2021-07-13 18:03:47
【问题描述】:

我是 Django 的新手。 我正在使用 HTML 模板制作侧边栏。每当我单击子菜单按钮时,都会使用 # 生成 URL,例如 http://localhost:8000/#form .手动删除 # 时 forms 工作正常。

这是我的 HTML 代码:

<!-- ========== Left Sidebar Start ========== -->
        
        <div class="vertical-menu">

            <div data-simplebar class="h-100">

                <!--- Sidemenu -->
                <div id="sidebar-menu">
                    <!-- Left Menu Start -->
                    <ul class="metismenu list-unstyled" id="side-menu">
                        <li class="menu-title">Main</li>


                        <li>
                            <a href="javascript: void(0);" class="waves-effect">
                                <span class="badge rounded-pill bg-primary float-end">20+</span>
                                <i class="mdi mdi-view-dashboard"></i>
                                <span> Dashboard </span>
                            </a>
                            <ul class="sub-menu" aria-expanded="false">
                                <li><a href="index.html">Dashboard One</a></li>
                                <li><a href="form">Form</a></li>
                            </ul>
                        </li>

                        <li>
                            <a href="widgets.html" class="waves-effect">
                                <i class="mdi mdi-cube-outline"></i>
                                <span> Widgets </span>
                            </a>
                        </li>

.
.
.

这是我的 urls.py 代码:

from django.urls import path, include
from .import views
urlpatterns = [
    path('', views.index, name="index"),
    path('form', views.form, name="form"),
]

这是我的views.py代码:

from django.shortcuts import render, redirect

def index(request):
    return render(request, 'index.html', {})

def form(request):
    return render(request, 'form.html', {})

【问题讨论】:

标签: javascript python html css django


【解决方案1】:

在您的 html 文件中,您需要按如下方式制作指向索引和表单的链接:

                            <ul class="sub-menu" aria-expanded="false">
                                <li><a href="{% url 'index' %}">Dashboard One</a></li>
                                <li><a href="{% url 'form' %}">Form</a></li>

下面是一个最小的工作示例。

文件夹结构:

manage.py

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "doodle.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        # The above import may fail for some other reason. Ensure that the
        # issue is really that Django is missing to avoid masking other
        # exceptions on Python 2.
        try:
            import django
        except ImportError:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            )
        raise
    execute_from_command_line(sys.argv)

settings.py

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

SECRET_KEY = 'a'
DEBUG = True
ALLOWED_HOSTS = '127.0.0.1', 'localhost'

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'doodle_app',
]

ROOT_URLCONF = 'doodle.urls'

TEMPLATES = [{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'doodle_app', 'templates'),],
},]

urls.py(在文件夹doodle

from django.conf.urls import include
from django.urls import path

from django.conf.urls.static import static

urlpatterns = [
    path('', include('doodle_app.urls')),
]

form.html

<!DOCTYPE html>
<html>
  <h1>In Form</h1>
  <ul>
    <li><a href="{% url 'index' %}">Dashboard One</a></li>
    <li><a href="{% url 'form' %}">Form</a></li>
  </ul>
</html>

index.html

<!DOCTYPE html>
<html>
  <h1>In index</h1>
  <ul>
    <li><a href="{% url 'index' %}">Dashboard One</a></li>
    <li><a href="{% url 'form' %}">Form</a></li>
  </ul>
</html>

urls.py [在文件夹doodle_app]

from django.urls import path
from .import views
urlpatterns = [
    path('', views.index, name="index"),
    path('form', views.form, name="form"),
]

最后是views.py

from django.shortcuts import render, redirect

def index(request):
    return render(request, 'index.html', {})

def form(request):
    return render(request, 'form.html', {})

pip安装Django环境并运行:python manage.py runserver打开浏览器输入localhost:8000 ...

【讨论】:

  • using href="{% url 'form' %}" 正在生成 localhost:8000/#/form
  • 那不应该......我有一个最低限度的工作示例,并且工作正常。我将添加到我的答案中
猜你喜欢
  • 2021-01-18
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
  • 2014-04-01
  • 2015-05-10
  • 2020-07-10
  • 1970-01-01
  • 2012-02-23
相关资源
最近更新 更多