应用程序链接到根目录,而不是重定向时的实际应用程序

时间:2020-04-07 12:33:45

标签: django python-3.x

在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

1 个答案:

答案 0 :(得分:-1)

好吧,事实证明问题出在base.html上。

应该改为/contactus而不是contactus/

实际上,使用contactus/重定向到127.0.0.1/AppName/contactus

编辑:从进一步的答案中,解决此问题的最佳方法实际上是使用

{% url "contactus" %}

因此路径不是硬编码的

相关问题