我有一个python django应用程序。我有一个视图,我对其进行了复制和稍微更改,以创建第二个视图。但它们似乎是挂钩在一起的,复制了页面内容,而它们应该是不同的。
这是我的urls.py
from django.urls import path, include
from django.contrib.auth import views as auth_views
from django.views.generic.base import RedirectView
from . import views
app_name = 'app'
urlpatterns = [
# Journals by Discipline
path('journals-by-discipline/', views.journals_by_discipline, name='journalsByDiscipline'),
path('journals-by-discipline/chart-data/<str:discipline>/', views.journals_by_discipline_chart_data),
path('journals-by-discipline/journals-and-disciplines-map/', views.get_journals_and_disciplines_map),
path('journals-by-discipline/disciplines-list/', views.disciplines_list),
# Journals By Discipline (Elsevier)
path('journals-by-discipline-elsevier/', views.journals_by_discipline_elsevier, name='journalsByDisciplineElsevier'),
path('journals-by-discipline/chart-data/<str:discipline>/', views.journals_by_discipline_chart_data_elsevier),
path('journals-by-discipline/journals-and-disciplines-map/', views.get_journals_and_disciplines_map),
path('journals-by-discipline/disciplines-list/', views.disciplines_list),
]我有两个视图,journals_by_discipline和journals_by_discipline_elsevier
这是我的views.py
from django.shortcuts import get_object_or_404, render
from django.contrib.auth.decorators import login_required
from django.http import JsonResponse
from rest_framework.decorators import api_view
from rest_framework.response import Response
import datetime as datetime
from dateutil.relativedelta import relativedelta
from urllib.parse import unquote
import json
from .onefigr_analysis import Data
# Instantiate Data object to fetch data across all views
data = Data()
# Journals by Discipline Page
def journals_by_discipline(request):
template_name = 'app/journals-by-discipline.html'
return render(request, template_name)
@api_view(['GET'])
def disciplines_list(request):
if request.method == 'GET':
return Response(data.get_disciplines_list())
@api_view(['GET'])
def journals_by_discipline_chart_data(request, discipline):
if request.method == 'GET':
query_discipline = unquote(discipline)
return Response(data.journals_by_discipline_chart_data(discipline))
@api_view(['GET'])
def get_journals_and_disciplines_map(request):
if request.method == 'GET':
return Response(data.journals_and_disciplines_map())
# Journals by Discipline Elsevier Page
def journals_by_discipline_elsevier(request):
template_name = 'app/journals-by-discipline-elsevier.html'
return render(request, template_name)
@api_view(['GET'])
def disciplines_list(request):
if request.method == 'GET':
return Response(data.get_disciplines_list())
@api_view(['GET'])
def journals_by_discipline_chart_data_elsevier(request, discipline):
if request.method == 'GET':
query_discipline = unquote(discipline)
return Response(data.journals_by_discipline_chart_data_elsevier(discipline))
@api_view(['GET'])
def get_journals_and_disciplines_map(request):
if request.method == 'GET':
return Response(data.journals_and_disciplines_map()) 在我尝试创建第二个视图(journals by discipline elsevier)时,我复制了用于创建第一个视图的逻辑。但结果是两个页面都是相同的。
在我的Data()类中,我有两个方法:journals_by_discipline_chart_data和journals_by_discipline_chart_data_elsevier,它们相似但不相同。我试图在我的views.py文件中以不同的方式调用它们,但它不能正常工作。
如何解开这两个视图?
发布于 2020-11-03 00:41:38
path('journals-by-discipline/', views.journals_by_discipline),
path('journals-by-discipline/chart-data/<str:discipline>/', views.journals_by_discipline_chart_data),
path('journals-by-discipline-elsevier/', views.journals_by_discipline_elsevier),
path('journals-by-discipline/chart-data/<str:discipline>/', views.journals_by_discipline_chart_data_elsevier),每个块中的第一个路由是不同的(journals-by-discipline/ != journals-by-discipline-elsevier/)。但是第二个路由是相同的(都是journals-by-discipline/chart-data/<str:discipline>/)。
因此,路由journals-by-discipline/chart-data/<str:discipline>/将始终调用函数views.journals_by_discipline_chart_data。它永远不会到达第二次提到的路线。
您可以将第二个块中的第二个路由更改为journals-by-discipline-elsevier/chart-data/<str:discipline>/以保持一致。
https://stackoverflow.com/questions/64649442
复制相似问题