Запрос данных с использованием фильтра Django/python

Я довольно новичок в бэкенд-фреймворке Django. Я смог легко запрашивать данные, но теперь я пытаюсь фильтровать эти данные. Когда я запускаю приложение, оно загружает целевую страницу и другие страницы, но когда я пытаюсь перейти на страницу FRReports, я получаю

"Ошибка во время рендеринга шаблона В шаблоне C:\Users\n9177d\webdart\DjangoWebProject1\DjangoWebProject1\webdart\templates\webdart\base.html, ошибка в строке 16

'webdart' не является зарегистрированным пространством имен"

<

urls.py

from django.urls import path, include
from . import views
from webdart.views import AboutView
from django.contrib import admin
admin.autodiscover()


# Use '' to default to the home page
urlpatterns = [
    path('', views.landing, name='webdart-landing'),

    path('admin/', admin.site.urls),

    path('home/', views.home, name='webdart-home'),

    path('data/', views.data, name='webdart-data'),
    path('data/stationData/', views.data_stationData, name='webdart-data_stationData'),
    path('data/obscura/', views.data_obscura, name='webdart-data_obscura'),
    path('data/tiz/', views.data_tiz, name='webdart-data_tiz'),
    path('data/mcv/', views.data_mcv, name='webdart-data_mcv'),
    path('data/viewer/', views.data_viewer, name='webdart-data_viewer'),
    path('data/multiSiteReport/', views.data_multiSiteReport, name='webdart-data_multiSiteReport'),

    path('antennaBias/', views.documents_antennaBias, name='webdart-documents_antennaBias'),
    path('FRReports/', views.DocRepositoryListView.as_view(), name='list'),
    path('<int:pk>', views.documents_FRReports.as_view(), name='webdart-documents_FRReports'),
    #path('FRReports/', views.documents_FRReports, name='webdart-documents_FRReports'),
    path('IERSBulletinA/', views.documents_IERSBulletinA, name='webdart-documents_IERSBulletinA'),

. . .

views.py

    from django.core.paginator import Paginator
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import TemplateView, ListView, DetailView
from webdart.models import Person, DocRepository 
from webdart.filters import DocRepositoryFilter

class DocRepositoryListView(ListView):
    model = DocRepository
    template_name = 'webdart/FRReports.html'

    def get_context_data (self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['filter'] = DocRepositoryFilter(self.request.GET, queryset=self.get_queryset())
        return context

class documents_FRReports(DetailView):
   model = DocRepository
   template_name = 'webdart/FRReports.html'

# Create your views here.
def landing(request):
    return render(request, 'webdart/landing.html')

def home(request):
    fname = Person.objects.filter(lname='Johnson').filter(fname='Daniel').values('fname').get()
    lname = Person.objects.filter(lname='Johnson').filter(fname='Daniel').values('lname').get()
    phone = Person.objects.filter(lname='Johnson').filter(fname='Daniel').values('phone').get()
    pdfPath = DocRepository.objects.all()
    return render(request, 'webdart/home.html', {'fname': fname, 'lname': lname, 'phone': phone, 'pdfPath': pdfPath, 'docPath': "C:/oracleas/j2ee/as_wdintAFTB/AintRepository"})
    #return render(request, 'webdart/home.html')

def data(request):
    return render(request, 'webdart/data.html')
def data_stationData(request):
    return render(request, 'webdart/stationDataHTML.html');
def data_obscura(request):
    return render(request, 'webdart/obscuraHTML.html');
def data_tiz(request):
    return render(request, 'webdart/tizHTML.html');
def data_mcv(request):
    return render(request, 'webdart/mcvHTML.html');
def data_viewer(request):
    return render(request, 'webdart/viewerHTML.html');
def data_multiSiteReport(request):
    return render(request, 'webdart/multiSiteReport.html');

def documents_antennaBias(request):
     pdfPath = DocRepository.objects.all()
     viewsPerPage = int(13)
     antennaBiasDocs = []

     for file in pdfPath:
         if file.file_location.split("/")[0] == "RTS Range Bias":
            antennaBiasDocs.append(file)

     paginator = Paginator(antennaBiasDocs, 13)
     page = request.GET.get('page')
     contacts = paginator.get_page(page)

     test = "reversed"

     return render(request, 'webdart/antennaBias.html', {'pdfPath': pdfPath,'test': test, 'contacts': contacts, 'viewsPerPage': viewsPerPage, 'antennaBiasDocs': antennaBiasDocs, 'docPath': "C:/oracleas/j2ee/as_wdintAFTB/AintRepository"})

#def documents_FRReports(request):
 #   return render(request, 'webdart/FRReports.html')

. . .

filters.py

    import django_filters
from webdart.models import DocRepository


class DocRepositoryFilter(django_filters.FilterSet):

    class Meta:
        model = DocRepository
        fields = ('file_location',)

models.py

class DocRepository(models.Model):
    doc_repository_id = models.FloatField(primary_key=True)
    doc_definition = models.ForeignKey(DocDefinition, models.DO_NOTHING, blank=True, null=True)
    upload_date = models.DateField()
    title = models.CharField(max_length=255, blank=True, null=True)
    date_on_doc = models.DateField()
    file_location = models.CharField(max_length=255)
    destination_src = models.FloatField(blank=True, null=True)
    datetimelu = models.DateField()
    useridlu = models.CharField(max_length=255, blank=True, null=True)
    is_restricted = models.CharField(max_length=3, blank=True, null=True)
    is_deleted = models.CharField(max_length=3, blank=True, null=True)

    def __str__(self):
        return self.file_location

    class Meta:
        managed = False
        db_table = 'doc_repository'

base.html

Документы Смещение антенны Отчеты F&R IERS Bulletin A IERS Bulletin C NRF Пределы полосы пропускания OCN ONDLC ORL RAPID Доступность системы

FRReports.html

    {% extends 'webdart/base.html' %}
{% load static %}
{% block title %} WeB DARt - Home {% endblock %}
{% block content %}

          
         <div class="container " >
            <div class="row" >
               <div class="col-md-6 offset-md-4 my-5 ">
                  <h1 class="text-decoration-underline">
                  F&R Report Documents
                  <h1>
               </div>
            </div>
         </div>


         <div  class="container  shadow  rounded" >
            <div class="row" >
              <table id="customers">
 <tr>
   <th>Title</th>
   <th>Upload Date</th>
 </tr>
                  </table>
 </div>
             {{ filter.form }}
 <ul>
     {% for element in filter.qs %}
        <li>
            <a href="{% url 'webdart:detail' element.id %}">a{{ element.file_location }}</a>
            </li>
            {% endfor %}
</ul>
</div>


      {% endblock %}

Я думаю, что ваша ошибка заключается в теге шаблона {% url 'webdart:detail' element.id %}. Я полагаю, что когда вы используете {% url %}, первый аргумент, который вы передаете ему - это имя пути в ваших urlpatterns. Если ваша ссылка пытается перейти по пути:

path('<int:pk>', views.documents_FRReports.as_view(), name='webdart-documents_FRReports')

Тогда ваш тег шаблона должен быть примерно таким:

{% url 'webdart-documents_FRReports' element.id %}

К сожалению, я не смог заставить его работать с первоначально использованным кодом. Я смог сделать фильтрацию в файле views.py:

Затем я смог манипулировать этим представлением в шаблоне (я создал шаблон ниже под названием document_static.html, чтобы я мог просто включить его в другие страницы документа:

).

Вот страница документа (IERSBulletinA.html):

{% extends 'webdart/base.html' %}
{% load static %}
{% block title %} WeB DARt - Home {% endblock %}
  
{% block content %}

    <div class="container " >
        <div class="row " >
            <div class="col-md-6 offset-md-4 my-5">
                <h1 class="text-decoration-underline">IERS Bulletin A Documents<h1>
            </div>
        </div>
    </div>
  {% include "webdart/document_static.html" %}

      {% endblock %}

А вот urls.py для всех интересующихся:

"""
Definition of urls for webdart.
"""

from django.urls import path, include
from . import views
from webdart.views import AboutView
from django.contrib import admin
from django.views.generic import ListView, DetailView
from django.views import View
from .models import DocRepository
from django.http import HttpResponse
admin.autodiscover()



# Use '' to default to the home page
urlpatterns = [
    path('', views.landing, name='webdart-landing'),

    path('admin/', admin.site.urls),

    path('home/', views.home, name='webdart-home'),

    path('data/', views.data, name='webdart-data'),
    path('data/stationData/', views.data_stationData, name='webdart-data_stationData'),
    path('data/obscura/', views.data_obscura, name='webdart-data_obscura'),
    path('data/tiz/', views.data_tiz, name='webdart-data_tiz'),
    path('data/mcv/', views.data_mcv, name='webdart-data_mcv'),
    path('data/viewer/', views.data_viewer, name='webdart-data_viewer'),
    path('data/multiSiteReport/', views.data_multiSiteReport, name='webdart-data_multiSiteReport'),
    path('antennaBias/', views.documents_antennaBias, name='webdart-documents_antennaBias'),
    path('FRReports/', views.docRepo, name='webdart-documents_FRReports'),
    path('IERSBulletinA/', views.documents_IERSBulletinA, name='webdart-documents_IERSBulletinA'),
    path('IERSBulletinB/', views.documents_IERSBulletinB, name='webdart-documents_IERSBulletinB'),
    path('NRF/', views.documents_NRF, name='webdart-documents_NRF'),
    path('OCNBandwidth/', views.documents_OCNBandwidth, name='webdart-documents_OCNBandwidth'),
    path('ONDLC/', views.documents_ONDLC, name='webdart-documents_ONDLC'),
    path('ORL/', views.documents_ORL, name='webdart-documents_ORL'),
    path('RAPID/', views.documents_RAPID, name='webdart-documents_RAPID'),
    path('SystemAvail/', views.documents_SystemAvail, name='webdart-documents_SystemAvail'),

    path('launch/', views.schedule_launch, name='webdart-schedule_launch'),
    path('maintenance/', views.schedule_maintenance, name='webdart-schedule_maintenance'),

    path('help/', views.support_help, name='webdart-support_help'),
    path('contact/', views.support_contact, name='webdart-support_contact'),
    path('networkRequest/', views.support_networkRequest, name='webdart-support_networkRequest'),

    path('accountDetails/', views.user_accountDetails, name='webdart-user_accountDetails'),
    path('signOut/', views.user_signOut, name='webdart-user_signOut'),
    path('timeOut/', views.user_timeOut, name='webdart-user_timeOut'),
    path('accountRequest/', views.user_accountRequest, name='webdart-user_accountRequest'),

    path('', AboutView.as_view(template_name="data-stationData")),
]

И выдержка из models.py тоже, потому что почему бы и нет:

class DocRepository(models.Model):
    doc_repository_id = models.FloatField(primary_key=True)
    doc_definition = models.ForeignKey(DocDefinition, models.DO_NOTHING, blank=True, null=True)
    upload_date = models.DateField()
    title = models.CharField(max_length=255, blank=True, null=True)
    date_on_doc = models.DateField()
    file_location = models.CharField(max_length=255)
    destination_src = models.FloatField(blank=True, null=True)
    datetimelu = models.DateField()
    useridlu = models.CharField(max_length=255, blank=True, null=True)
    is_restricted = models.CharField(max_length=3, blank=True, null=True)
    is_deleted = models.CharField(max_length=3, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'doc_repository'
Вернуться на верх