Python Django-URL相互附加

Python Django-URL相互附加,python,django,Python,Django,我正在django制作一个web应用程序,目前我正面临这个问题。我有一个仪表板页面和一个上传页面。仪表板页面中有一个按钮链接到上传页面。但每当我点击按钮,上传页面url就会附加到仪表板页面。 代码如下: views.py from django.shortcuts import render, get_object_or_404 from django.http import HttpResponse, HttpResponseRedirect from .models import Regis

我正在django制作一个web应用程序,目前我正面临这个问题。我有一个仪表板页面和一个上传页面。仪表板页面中有一个按钮链接到上传页面。但每当我点击按钮,上传页面url就会附加到仪表板页面。 代码如下:

views.py

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect
from .models import Registration
from .forms import UploadForm
from django.urls import reverse

# Create your views here.
def homepage(request):
  return render(request, 'index.html', {})

def dashboard(request):
  posts = Registration.objects.all()
  return render(request, "dashboard.html", {'posts': posts})

def upload(request):
  form = UploadForm()
  return render(request, "upload.html", {'form': form})

def uploadimage(request):
  if request.method == 'POST':
    form=UploadForm(request.FILES['image'], request.POST)
      if form.is_valid():
        pic = request.FILES['image']
        desc = request.POST
        post = Registration(pic='pic', desc='desc')
        post.save()
url.py

from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from . import views
urlpatterns = [
    path('', views.homepage, name='homepage'),
    path('dashboard/', views.dashboard, name='dashboard'),
    path('upload/', views.upload, name='upload'),
    path('create/', views.uploadimage, name='uploadimage'),
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
dashboard.html

 <div class="profile">
      <div class="left-s col s12 m3 l3">
        <div class="profile-overview">
            <img src="{%static 'images/group.jpg' %}" alt="profile-pic" class="circle responsive-img">
            <p>Daljit Singh</p>
            <p>Lorem ipsum dolor sit amet.</p>
        </div>
        <hr>
        <div class="container">
            <ul>
                <li><a href="#">About</a></li>
                <li><a href="#">Friends</a></li>
                <li><a href="#">Photos</a></li>
                <li><a href="#">Likes</a></li>
            </ul>
        </div>
        <hr>
        <button><a href="upload/">Upload post</a></button>
      </div>

达尔吉特·辛格

Lorem ipsum dolor sit amet



错误:

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/dashboard/upload/
Using the URLconf defined in main.urls, Django tried these URL patterns, in this order:
[name='homepage']
dashboard/ [name='dashboard']
upload/ [name='upload']
create/ [name='uploadimage']
^media\/(?P<path>.*)$
The current path, dashboard/upload/, didn't match any of these.

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
未找到页面(404) 请求方法:获取 请求URL:http://127.0.0.1:8000/dashboard/upload/ Django使用main.URL中定义的URLconf,按以下顺序尝试了这些URL模式: [name='homepage'] 仪表板/[name='dashboard'] 上传/[name='upload'] 创建/[name='uploadimage'] ^媒体\/(第页*)$ 当前路径dashboard/upload/与这些路径中的任何一个都不匹配。 您看到此错误是因为Django设置文件中的DEBUG=True。将其更改为False,Django将显示一个标准的404页面。 非常感谢您的帮助。

应该是-

如果在将附加到基本URL的路径之前输入“/”(
/upload/
),并且如果“/”(
upload/
)不存在,则它将附加到现有路径

或评论中建议的不同方式-

<a href="{% url 'upload' %}">Upload post</a>

或者更好。。。实际上使用路由器机器,因为它是一个命名路由。。。例如: