[英]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.