繁体   English   中英

为什么我的 href 在 Django Python 的 url 中生成 #?

[英]Why is my href generating # in the url in Django Python?

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

这是我的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', {})

在您的 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 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM