Django 2.0 NoReverseMatch: не зарегистрированное пространство имен - PullRequest
0 голосов
/ 12 ноября 2018

Моя цель - создать гиперссылки, которые бы добавляли ключевое слово в функцию views, которая затем перетаскивала бы запрос из моей базы данных на страницу.

ЦЕЛЬ: Нажмите на гиперссылку, которая даст мне запрос по конкретному мажору.

Я пытался использовать конвертер, Таким образом, цель была: 1 - первый шаг, 3 - последний шаг. Это возможно?

1) Click the hyperlink -> Major = Accounting

2)URL.py 
path(<str:Accounting/, views.Major, name=Major)

3)Views.py

    def Major(request, Accounting):
       major_choice = professor.objects.filter(Major = Accounting)
       return render(request, 'locate/major.html', {'major_choice': major_choice})

ПРИМЕЧАНИЕ: я заменил переменные на то, что я хочу, чтобы они содержали «Бухгалтерский учет», вы увидите внутри нижнего views.py его, называемого «Major».

Index.html

<a href="{% url 'locate:Major' 'Accounting' %}">Accounting</a>

major.html

<ul>
{% for major in major_choice %}
    <li>{{major.ProfessorName}}</li>
{%endfor%}
</ul>

urls.py

from django.urls import path

from . import views

    urlpatterns = [
        path('', views.index, name='index'),
        path('<str:Major/', views.Major, name='Major')
    ]

models.py

from django.db import models

class professor(models.Model):
    ProfessorIDS = models.IntegerField()
    ProfessorName = models.CharField(max_length=100)
    ProfessorRating = models.DecimalField(decimal_places=2,max_digits=4)
    NumberofRatings = models.CharField(max_length=50)
    Major = models.CharField(max_length=50)

    def __str__(self):
        return self.ProfessorName

views.py

from django.http import HttpResponse
from django.shortcuts import render
from .models import professor


def index(request):
    professors = professor.objects.all()
    return render(request, 'locate/index.html', {'professors': professors})

def Major(request, major):
    major_choice = professor.objects.filter(Major = major)
    return render(request, 'locate/major.html', {'major_choice': major_choice})

1 Ответ

0 голосов
/ 12 ноября 2018

Пожалуйста, обновите ваш путь к URL:

path('<str:Major>/', views.Major, name='Major')

А в вашем html:

 <a href="{% url 'Major' 'Accounting' %}">Accounting</a>

просмотров:

def Major(request, Major):
   ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...