【发布时间】:2021-10-03 18:26:25
【问题描述】:
嗨,我正在构建 Django 的第一个项目。 当用户输入关键字时,我使用 ajax 来更新产品
这是我的 HTML:
<form id="productform" method="GET">{% csrf_token %}
<label>Producto:</label>
<div class="input-group">
<span class="input-group-label"><i class="fi-magnifying-glass"></i></span>
<input type="text" class="input-group-field" placeholder="Buscar.." id="keyprod" name="keyprod">
</div>
</form>
提交表单时这是我的 JS:
$("#productform").submit(function (e) {
e.preventDefault();
var keyprod = $("#keyprod").val();
$.ajax({
type: 'GET',
url: "ajax_get_products",
data: {"keyprod": keyprod},
success: function (response) {
var sel = $("#productselect");
sel.empty();
console.log(response)
for (var p in response) {
sel.append('<option value="' + response[p]["id"] + '">' + response[p]["full_name"] + '</option>');
}
},
error: function (response) {
console.log(response)
}
})
})
这是我的网址文件:
app_name = "sales_app"
urlpatterns = [
path(
'sales/register/',
views.LoadCurrentSaleInfo.as_view(),
name='sale-register',
),
path(
'sales/register/<str:new>',
views.LoadCurrentSaleInfo.as_view(),
name='sale-register',
),
path('sales/register/ajax_get_products',
ajax_get_products, name="ajax_get_products"),
]
最后这是我认为的代码:
def ajax_get_products(request):
print("Im in ajax request") --> This is never shown
if request.is_ajax and request.method == "GET":
keyprod = request.GET.get("keyprod", None)
products = Product.objects.search_key_word(keyprod, 'name')
serializer = ProductSerializer(products, many=True)
return JsonResponse(serializer.data, safe=False, status=200)
return JsonResponse({}, status=400)
当我在我的 JS 方法的控制台中打印响应时,将打印正在提交表单的当前 html 页面。我在做什么错任何想法? 谢谢!
我也附上我的主 url 文件:
urlpatterns = [
path('admin/', admin.site.urls),
# users app
re_path('', include('applications.users.urls')),
re_path('', include('applications.home.urls')),
re_path('', include('applications.clients.urls')),
re_path('', include('applications.providers.urls')),
re_path('', include('applications.products.urls')),
re_path('', include('applications.sales.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
【问题讨论】:
-
ajax GET中的url应该是
sales/register/ajax_get_product吧? -
你尝试 GET
ajax_get_products并期待sales/register/ajax_get_products- 你能看到问题吗? -
[27/Jul/2021 22:06:22] "GET /sales/register/sales/register/ajax_get_products?keyprod=au HTTP/1.1" 404 7354 未找到:/sales/register/ sales/register/ajax_get_products 当我将其更改为 sales/register/ajax_get_products 时会发生这种情况
-
/sales/register/sales/register可能是导致问题的原因。这似乎是重复的。请同时发布您的主要项目的url.py文件。因为url: "/sales/register/ajax_get_products/"应该可以工作。 -
我已附上主url文件代码
标签: javascript json django ajax django-views