Django - URL добавляются друг к другу - PullRequest
0 голосов
/ 28 января 2020

Я создаю веб-приложение на django, и в настоящее время я сталкиваюсь с этой проблемой. У меня есть страница панели инструментов и страница загрузки. На странице панели инструментов есть кнопка, которая ссылается на страницу загрузки. но всякий раз, когда я нажимаю кнопку, 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()

urls.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)

панель инструментов. 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>

ошибка :

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.

Помощь будет оценена.

1 Ответ

1 голос
/ 28 января 2020

Это должно быть - <a href="/upload/">Upload post</a>

Если вы введете '/' (/upload/) перед путем, он добавится к базовому URL, а если '/' (upload/) нет существует, тогда он будет добавлен к существующему пути.

Или другой способ, предложенный в комментарии -

<a href="{% url 'upload' %}">Upload post</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...