在Django中使用路径时遇到一些麻烦。我有python经验,但没有Django经验。
这就是我所拥有的
templates/AppName/base.html
<header id="header">
<div id="logo">
<div id="top_menu">
Home | Calendar | About |
<a href="/contactus">Contact Us</a>
</div>
</div>
</header>
template/AppName/contact_us.html
{% extends 'Orchestrator/base.html' %}
{% block content %}
<h2>New post</h2>
<form method="POST" class="post-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
{% endblock %}
AppName/urls.py
from django.urls import path
from . import views
app_name = 'AppName'
urlpatterns = [
path('', views.index, name='index'),
path('contactus/', views.contact_us, name='contactus')
]
AppName/views.py
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from .forms import ContactUs
def index(request):
return render(request, 'AppName/base.html')
# Forms #
def contact_us(request):
form = ContactUs()
return render(request, 'AppName/contact_us.html', {'form': form})
AppName/forms.py
from django import forms
class ContactUs(forms.Form):
firstname = forms.CharField(max_length=100)
lastname = forms.CharField(max_length=100)
urls.py
(根源)
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('AppName/', include('AppName.urls')),
path('admin/', admin.site.urls),
]
因此,起始页面的呈现方式
127.0.0.1:8000/AppName
效果很好,但是当我想将Contact Us
按钮重定向到AppName/contactus
时,Django
实际上是重定向到127.0.0.1/contactus
。
关于如何解决此问题的任何想法?
编辑:添加了root/urls.py
答案 0 :(得分:-1)
好吧,事实证明问题出在base.html
上。
应该改为/contactus
而不是contactus/
实际上,使用contactus/
重定向到127.0.0.1/AppName/contactus
编辑:从进一步的答案中,解决此问题的最佳方法实际上是使用
{% url "contactus" %}
因此路径不是硬编码的