Django: невозможно перенаправить на другой вид в Django - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь нажать кнопку в http://127.0.0.1:8000/main/electronics/switch/, чтобы позвонить getCommodityCommentDetail, чтобы что-то сделать, а затем перенаправить на другую страницу commodityInfoPage.

Меня озадачивает то, что на странице всегда отображается одинаковое содержимое на начальной странице, хотя URL-адрес изменился, например, на http://127.0.0.1:8000/main/comments/1/.

После тестирования я обнаружил, что commodityInfoPage в views.py не вызывается.Я долго искал решения, но все они потерпели неудачу.Так как я могу это исправить?

urls.py:

app_name = 'main'

urlpatterns = [
    # eg:127.0.0.1:8000/main/
    path('', views.index, name = 'index'),
    path('getCommodityInfo/', views.getCommodityInfo, name = 'getCommodityInfo'),
    path('getCommodityCommentDetail/', views.getCommodityCommentDetail, name="getCommodityCommentDetail"),
    path('<str:category>/<str:searchKey>/',views.commodityInfoPage, name = 'commodityInfoPage'),
    path('comments/<str:commodityId>/', views.commodityCommentPage,name = 'commodityCommentPage'),
]

view.py:

def getCommodityCommentDetail(request):
    if request.method=="POST":
        commodityId = request.POST.get("commodityId")
        # scrapy module is waiting implementation

        #
        return HttpResponseRedirect(reverse('main:commodityInfoPage',args=(commodityId)))

def commodityCommentPage(request, commodityId):
    print("enter commodityCommentPage")
    commentList = JDCommentDetail.objects.all()
    context = {'commentList':commentList}
    return render(request,'main/commodityCommentPage.html',context)

шаблоны:

<form action="{% url 'main:getCommodityCommentDetail'%}" method="POST">
   {% csrf_token %}
   <input class="hidden" value="{{commodity.id}}" name="commodityId">
   <button type="submit" class="btn btn-default" >review</button>
</form>

1 Ответ

0 голосов
/ 15 марта 2019

Проблема в том, что comments/1/ соответствует шаблону URL commodityInfoPage.

path('<str:category>/<str:searchKey>/',views.commodityInfoPage, name='commodityInfoPage'),

Вы можете решить эту проблему, изменив шаблоны URL-адресов, чтобы они не конфликтовали, или переместив шаблон URL-адреса commodityCommentPage выше commodityInfoPage.

path('comments/<str:commodityId>/', views.commodityCommentPage, name='commodityCommentPage'),
path('<str:category>/<str:searchKey>/', views.commodityInfoPage, name='commodityInfoPage'),

Обратите внимание, что если вы измените порядок шаблонов, вы не сможете просмотреть commodityInfoPage, если категория «комментарии».

...