首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在django中如何在ajax urls中传递kwargs?找不到参数为'‘('',)’‘的反向。尝试了1个模式:[‘合作伙伴/分析/(?P<id>[0-9]+)/$’]

在Django中,使用AJAX请求并通过URL传递关键字参数(kwargs)通常涉及到定义URL模式和使用Django的reverse函数来生成URL。如果你遇到了问题,可能是因为URL模式定义不正确或者reverse函数的使用方式有误。

基础概念

URL模式:在Django中,URL模式是用来匹配传入的HTTP请求的URL,并将其映射到相应的视图函数。

关键字参数(kwargs):在URL中传递的参数,通常用于指定特定的资源ID或其他动态值。

reverse函数:Django提供了一个reverse函数,用于根据视图名称和参数生成URL。

相关优势

  • 清晰性:通过URL模式传递参数可以使URL更加直观和易于理解。
  • 灵活性:可以轻松地修改URL结构而不影响视图逻辑。
  • 可维护性:将URL与视图分离有助于项目的长期维护。

类型

  • 位置参数:按照定义的顺序传递的参数。
  • 关键字参数:通过名称指定的参数,可以在URL中以任意顺序出现。

应用场景

  • 动态内容:当需要根据用户输入或数据库中的数据动态生成页面时。
  • 资源定位:用于定位特定的资源,如文章、用户资料等。

解决问题的方法

首先,确保你的URL模式定义正确。在你的例子中,模式应该是这样的:

代码语言:txt
复制
# urls.py
from django.urls import path
from .views import partner_analysis

urlpatterns = [
    path('合作伙伴/分析/<int:id>/', partner_analysis, name='partner_analysis'),
]

然后,在AJAX请求中使用reverse函数来生成URL:

代码语言:txt
复制
// 使用jQuery的AJAX示例
$.ajax({
    url: "{% url 'partner_analysis' id=some_id %}", // some_id是你想要传递的参数值
    method: 'GET',
    success: function(response) {
        // 处理响应
    },
    error: function(xhr, status, error) {
        // 处理错误
    }
});

如果你在模板外部使用reverse函数,可以这样做:

代码语言:txt
复制
from django.urls import reverse

url = reverse('partner_analysis', kwargs={'id': some_id})

确保some_id是你想要传递的实际参数值。

常见问题及原因

找不到参数:通常是因为URL模式中的正则表达式不正确,或者reverse函数中传递的参数名称与URL模式中定义的不匹配。

解决方法:检查URL模式中的正则表达式是否正确捕获了参数,并确保reverse函数中使用的参数名称与URL模式中的名称一致。

示例代码

假设你有一个视图函数partner_analysis,它接受一个名为id的参数:

代码语言:txt
复制
# views.py
from django.http import JsonResponse

def partner_analysis(request, id):
    # 处理逻辑
    data = {'analysis': 'Some analysis data for id: {}'.format(id)}
    return JsonResponse(data)

确保你的URL模式和AJAX调用如上所述正确设置,这样就可以在Django中通过AJAX请求传递关键字参数了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django 1.8 官方文档翻译: 3-1-1 URL调度器

关键字参数由正则表达式匹配的命名组组成,但是可以被django.conf.urls.url()的可选参数kwargs覆盖。...在更高级的用法中,可以使用命名的正则表达式组来捕获URL 中的值并以关键字 参数传递给视图。 在Python 正则表达式中,命名正则表达式组的语法是(?...P[0-9]{2})/$', views.article_detail), ] 这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数而不是位置参数传递给视图函数。...这个技术在Syndication 框架 中使用,来传递元数据和选项给视图。 处理冲突 URL 模式捕获的命名关键字参数和在字典中传递的额外参数有可能具有相同的名称。...在某些场景中,一个视图是通用的,所以在URL 和视图之间存在多对一的关系。对于这些情况,当反查URL 时,只有视图的名字还不够。请阅读下一节来了解Django 为这个问题提供的解决办法。

1.3K20

Django url 反向解析 和 命令空间

Django 依次匹配该列表中的每个URL模式,在遇到第一个与请求的URL相匹配的模式时停下来。...关键字参数由与正则表达式相匹配的命名组组成,并且这些关键字参数可以被django.conf.urls.url()的可选参数kwargs覆盖。...在更高级的用法中,可以使用命名的正则表达式组来捕获URL  中的值并以关键字 参数传递给视图。 在Python 正则表达式中,命名正则表达式组的语法是(?...这个技术在Syndication 框架 中使用,来传递元数据和选项给视图。 处理冲突 URL 模式捕获的命名关键字参数和在字典中传递的额外参数有可能具有相同的名称。...在某些场景中,一个视图是通用的,所以在URL 和视图之间存在多对一的关系。对于这些情况,当反查URL 时,只有视图的名字还不够。请阅读下一节来了解Django 为这个问题提供的解决办法。

2.4K30
  • django之urls系统

    : 正则表达式:一个正则表达式字符串 views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串 参数:可选的要传递给视图函数的默认参数(字典形式) 别名:一个可选的name参数...在更高级的用法中,可以使用分组命名匹配的正则表达式组来捕获URL中的值并以关键字参数形式传递给视图。 在Python的正则表达式中,分组命名正则表达式组的语法是(?...P[0-9]{2})/$', views.article_detail), ] 这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数而不是位置参数传递给视图函数。...捕获的参数永远都是字符串 每个在URLconf中捕获的参数都作为一个普通的Python字符串传递给视图,无论正则表达式使用的是什么匹配方式。...P[0-9]{4})/$', views.year_archive), 传递到视图函数views.year_archive() 中的year 参数永远是一个字符串类型。

    1.3K70

    Django之路由系统

    但 Django 默认这个参数为 APPEND_SLASH = True。...在更高级的用法中,可以使用分组命名匹配的正则表达式组来捕获URL中的值并以关键字参数形式传递给视图。 在Python的正则表达式中,分组命名正则表达式组的语法是(?...P[0-9]{2})/$', views.article_detail), ] 这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数而不是位置参数传递给视图函数。...捕获的参数永远都是字符串   每个在URLconf中捕获的参数都作为一个普通的Python字符串传递给视图,无论正则表达式使用的是什么匹配方式。...P[0-9]{4})/$', views.year_archive), 传递到视图函数views.year_archive() 中的year 参数永远是一个字符串类型。

    1.2K70

    Django视图层之路由配置系统(urls)

    ,通常为一个视图函数或一个指定视图函数路径的字符串 可选的要传递给视图函数的默认参数(字典形式) 一个可选的name参数  ''' 正则字符串参数 1 简单配置 from django.conf.urls...(通过圆括号)来捕获URL 中的值并以位置 参数传递给视图。...在更高级的用法中,可以使用命名的正则表达式组来捕获URL 中的值并以关键字 参数传递给视图。 在Python 正则表达式中,命名正则表达式组的语法是(?...P[0-9]{2})/$', views.article_detail), ] 这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数而不是位置参数传递给视图函数。...根据Django 视图的标识和将要传递给它的参数的值,获取与之关联的URL。 反向解析URL、反向URL 匹配、反向URL 查询或者简单的URL 反查。

    1.4K90

    Python进阶27-Django 路由层

    (ret.group('year')) 上面的示例使用简单的、没有命名的正则表达式组(通过圆括号)来捕获URL 中的值并以位置 参数传递给视图。...在更高级的用法中,可以使用命名的正则表达式组来捕获URL 中的值并以关键字 参数传递给视图。 在Python 正则表达式中,命名正则表达式组的语法是(?...,不要混用 反向解析 ---- 反向解析介绍 在使用Django 项目时,一个常见的需求是获得URL 的最终形式,以用于嵌入到生成的内容中(视图中和显示给用户的URL等)或者用于处理服务器端的导航(重定向等...Pid>[a-zA-Z0-9]+)/delete/', delete_view), ] 考虑下这样的两个问题: 第一个问题,函数 year_archive 中year参数是字符串类型的...变量值,以供Django传递到对应的视图函数中。

    1.1K30

    Pycharm开发Django项目URL分发器

    那么如何在django中实现这种需求呢。这时候我们可以在path函数中,使用尖括号的形式来定义一个参数。比如我现在想要获取一本书籍的详细信息,那么应该在url中指定这个参数。...id=1即可将参数传递过去。 URL中包含另外一个urls模块: 在我们的项目中,不可能只有一个app,如果把所有的app的views中的视图都放在urls.py中进行映射,肯定会让代码显得非常乱。...这个参数中可以指定url中需要传递的参数,比如在访问文章详情页的时候,可以传递一个id。传递参数是通过尖括号来进行指定的。...并且在传递参数的时候,可以指定这个参数的数据类型,比如文章的id都是int类型,那么可以这样写id>,以后匹配的时候,就只会匹配到id为int类型的url,而不会匹配其他的url,并且在视图函数中获取这个参数的时候...name参数:这个参数是给这个url取个名字的,这在项目比较大,url比较多的时候用处很大。 kwargs参数:有时候想给视图函数传递一些额外的参数,就可以通过kwargs参数进行传递。

    80010

    02.Django基础二之URL路由系统

    配置文件中默认没有 APPEND_SLASH 这个参数,但 Django 默认这个参数为 APPEND_SLASH = True。...在更高级的用法中,可以使用分组命名匹配的正则表达式组来捕获URL中的值并以关键字参数形式传递给视图。   在Python的正则表达式中,分组命名正则表达式组的语法是(?...P[0-9]{2})/$', views.article_detail), #某年某月某日的 ]   这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数而不是位置参数传递给视图函数...捕获的参数永远都是字符串   每个在URLconf中捕获的参数都作为一个普通的Python字符串传递给视图,无论正则表达式使用的是什么匹配方式。...P[0-9]{4})/$', views.year_archive),   传递到视图函数views.year_archive() 中的year 参数永远是一个字符串类型。

    1.5K20

    Django之URL(路由系统)用法

    如果是简单捕获,那么捕获值将作 为一个位置参数进行传递,如果是命名捕获,那么将作为关键字参数进行传递。 kwargs: 任意数量的关键字参数可以作为一个字典传递给目标视图。...在views.host中需要指定一个形式参数来接受(\d+)\ 的值 def user_list(request,id): return HttpResponse(id) \^host_list/(\...Django项目中,我们经常会遇到要在视图中返回一个重定向到具体URL的响应,或者要将具体的URL地址嵌入到HTML页面中(如:a标签的href属性等)的情况。...模板中超链接步骤 1)在项目urls.py中为include定义namespace属性。...(reverse('booktest:fan2')) 反向解析中URL的参数 位置参数 1)在booktest/urls.py中,修改fan2如下: url(r’^fan(\d+)_(\d+)/$’,

    1.8K10

    Django路由控制URL详解

    依次匹配每个URL模式,在与请求的URL相匹配的第一个模式停下来。也就是说,url匹配是从上往下的短路操作,所以url在列表中的位置非常关键。...关键字参数由正则表达式匹配的命名组组成,但是可以被django.conf.urls.url()的可选参数kwargs覆盖。...3.3 有名分组 上面的示例使用简单的、没有命名的正则表达式组(通过圆括号)来捕获URL 中的值并以位置 参数传递给视图。...在更高级的用法中,可以使用命名的正则表达式组来捕获URL 中的值并以关键字 参数传递给视图。 在Python 正则表达式中,命名正则表达式组的语法是(?...P[0-9]{2})/$', views.article_detail), ] 这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数而不是位置参数传递给视图函数。

    1.1K20

    【愚公系列】2022年01月 Python教学课程 45-Django框架之路由命名和反解析

    1.在使用include函数定义路由时,可以使用namespace参数定义路由的命名空间,如 re_path(r'^',include('book.urls',namespace='book')) 命名空间表示...2.在定义普通路由时,可以使用name参数指明路由的名字,如 urlpatterns = [ re_path(r'^$',index), # 匹配书籍列表信息的URL,调用对应的bookList...P[0-9]{4})/$", views.login, name="login") return redirect(reverse("login",kwargs={"year":3333})...) 3.在模板 templates 中的 HTML 文件中,利用 {% url “路由别名” %} 反向解析 无名反向解析 反向解析,当路由层 url 发生改变,在视图层和模板层动态反向解析出更改后的 url,免去修改的操作。 反向解析一般用在模板中的超链接及视图中的重定向。

    68330

    Django的URL路由系统

    (1) 正则表达式: 一个正则表达式字符串   (2) views视图函数: 一个可调用的对象,通常为一个视图函数或一个指定视图函数路径的字符串   (3) 参数: 可选的要传递给视图函数的默认参数...在更高级的用法中,可以使用分组命名匹配的正则表达式组来捕获URL中的值并以关键字参数形式传递给视图.   在Python的正则表达式中,分组命名正则表达式组的语法(?...P[0-9]{2})/$', views.article_detail), #某年某月某日的 ]   这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数而不是位置参数传递给试图函数...P[0-9]{4})/$', views.year_archive),     传递到试图函数views.year_archive()中的year参数永远是一个字符串类型....' %} #模板选择的时候,被django解析成了这个名字对应的url,这个过程叫做反向解析   在views函数中可以这样引用:(后面再讲这个视图函数应用反向解析的内容,上面的是模板应用反向解析的过程

    1.4K40

    django中url路由配置及渲染方式

    ’)  在url.py中为视图函数配置路由 from django.urls import path from ....    3、按顺序运行每一个,到第一个匹配的模式停止     4、一旦匹配,django导入并调用给定的视图     5、如果没有匹配到,或者中间出错,则返回404 3、path里参数的含义     path...)额外参数,是字典类型,传递给view name     :(可有可无)url名字 4、在url中捕获参数    尖括号   参数  > 可以捕获参数,传递给视图   本来捕获的值是字符串   ...P[0-9]|1[0-2])/',plan),   年  四位数,月  0-9 或者1和0-2 第二种是不分组的,在视图中安位置传参 re_path(r'plan/(\d{4})\([0...8、传递额外参数   当在路由中传入额外参数时,如果kwargs中key值与捕获参数不一致,按照kwargs为准。 ? ? ?

    3.1K20

    django之路由分组,反向解析,有名

    ^test/([0-9]{4})/', views.test), 会将加了括号的正则表达式匹配的内容当做位置参数传递给后面的视图函数 具体操作如下: ?...P\d+)/',views.test) 会将加了括号的正则表达式匹配的内容当做关键字参数传递给后面的视图函数 关键字就是你尖括号里面的名字(year) 具体操作如下: ? ? ?...只要不混着用,有名分组和无名分组支持多个相同类型的传参  反向解析: 试想一个场景,你有200多个a标签,href都指向index/,有一天在urls里面index改为了new_index,那么你只能手动改变...a标签中的href,当你改完,又变成了my_index,那么一天的时间都可能在改地址,那么有没有什么方法,不再把程序写死,反向解析就是应用于此。...的区别(了解) 1.0里面的url对应django2.0里面re_path django2.0里面的path第一个是精准匹配(你怎么写的,我就怎么匹配) django1.0版本中匹配到的参数都是字符串类型

    1.6K10
    领券