Python url在表单提交时没有更改?
我有一些类别,如餐厅、体育健身、快餐等。。我想创建包含所有类别的下拉菜单,并在每次选择不同类别时显示不同的类别项目: HTML: 然后从“选择第二个选项”中选择值为“sportfitness”,刷新页面并显示类别sportfitness中的项目,但url仍然为http://localhost:8000/objects/all/restaurants/1/ 在此之后,选择第三个选项并再次刷新carservice页面,这次url更改为http://localhost:8000/objects/all/sportfitness/1/ 而不是carservices,因此它有延迟1次 URL.py: 我可以根据需要提供更多信息。可能这不是Django问题,这是常见的编程问题,我不太确定。为什么会发生这种情况? 呈现函数不会更改URL 如何解决? 不要对视图返回的类别执行post请求,而是对所选类别执行post请求 e、 g.如果您当前的url是http://localhost:8000/objects/all/restaurants/1/,然后选择sportfitness,而不是在上执行post请求http://localhost:8000/objects/all/restaurants/1/ 在上发布请求http://localhost:8000/objects/all/sportfitness/1/. 这就是你可以做到的:Python url在表单提交时没有更改?,python,django,Python,Django,我有一些类别,如餐厅、体育健身、快餐等。。我想创建包含所有类别的下拉菜单,并在每次选择不同类别时显示不同的类别项目: HTML: 然后从“选择第二个选项”中选择值为“sportfitness”,刷新页面并显示类别sportfitness中的项目,但url仍然为http://localhost:8000/objects/all/restaurants/1/ 在此之后,选择第三个选项并再次刷新carservice页面,这次url更改为http://localhost:8000/objects/all
var url = "{% url 'show-all-objects' category=category page_num=1 %}";
var urlCategory = "{{ category }}";
$('#select_sort_category').on('change', function () {
$('#sort_form').attr('action', url.replace(urlCategory, this.value)).submit();
});
这回答了你的问题吗?有点。。我理解这个问题,但如何更改POST请求?url来自此处{%url'显示所有对象'类别=类别页面_num=1%}AJAX可能吗?要从select中获得价值,请避免使用AJAX,尽管我们也可以使用AJAX。只需检测点击事件,修改url,然后提交即可。要获取值,请执行var catagory=$select\u sort\u category.val;好的,我做到了,在你们的答案中也加入了代码,这对我很有帮助,现在答案已经完成了。我很好奇,没有JS有没有办法做到这一点?可能要将渲染更改为其他内容?
http://localhost:8000/objects/all/restaurants/1/
from django.urls import path, re_path
from . import views
urlpatterns = [
path('user/<int:pk>/', views.UserObjectsView.as_view(), name='user-objects'),
path('add/<str:category>/', views.add_object, name='add-object'),
path('<str:category>/<int:pk>/<int:page_num>/', views.show_object, name='show-object'),
#path('all/<str:category>/<int:page_num>/', views.show_all_objects, name="show-all-objects"),
re_path(r'all/(?P<category>\w+)/(?P<page_num>\d+)/?/(?P<city>\d+)?', views.show_all_objects, name="show-all-objects"),
]
def show_all_objects(request, category, page_num, city=None):
params_map = {
'restaurants': Restaurant,
'sportfitness': SportFitness,
'carservice': CarService,
'beautysalon': BeautySalon,
'fastfood': FastFood,
'carwash': CarWash,
'fun': Fun,
'other': Other,
}
if request.method == 'POST':
category = request.POST.get('select_sort_category')
objects = Object.objects.instance_of(params_map.get(category)).order_by('rating')
if city is not None:
objects = objects.filter(city=city)
paginator = Paginator(objects, 2)
objects = paginator.get_page(page_num)
context = {
'objects': objects,
'category': category,
'page_num': page_num,
}
return render(request, 'show_all_objects.html', context)
var url = "{% url 'show-all-objects' category=category page_num=1 %}";
var urlCategory = "{{ category }}";
$('#select_sort_category').on('change', function () {
$('#sort_form').attr('action', url.replace(urlCategory, this.value)).submit();
});