在 django 形式中使用reverse()

2024-01-09

我正在尝试使用 django 的撤销() https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse我的自定义小部件的 django 表单定义中的函数,但出现错误:

ImproperlyConfigured
The included urlconf urls doesn't have any patterns in it

这是代码:

class WorkForm(forms.Form):
    # ...
    category = forms.ChoiceField(
        required=True,
        label=_('Category'),
        help_text=_('Select most appropriate category for your work.')
    )
    subcategory = forms.ChoiceField(
        widget=DependantChoiceWidget(
            default_value=_('Select category first'),
            data_source_url=reverse('works-json-categories'),
            # data_source_url='', -- it works this way
            depends_on='category_id'
        ),
        required=True,
        label=_('SubCategory'),
        help_text=_('Which subcategory suits your work best.')
    )

我非常确定我的“works.urls”配置正确,因为所有其他页面都按预期工作。

有什么原因我不能使用reverse()在表单定义中?这与这段代码的运行时间有关系吗?有没有办法解决这个问题,或者这里唯一的选择是对 URL 进行硬编码?

这是完整的错误转储:

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/works/add?category=1&subcategory=1

Django Version: 1.4 pre-alpha
Python Version: 2.7.1
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'social_auth',
 'sorl.thumbnail',
 'helpers',
 'users',
 'works',
 'debug_toolbar']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.transaction.TransactionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'debug_toolbar.middleware.DebugToolbarMiddleware')


Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  89.                     response = middleware_method(request)
File "/usr/local/lib/python2.7/dist-packages/django/middleware/common.py" in process_request
  67.             if (not _is_valid_path(request.path_info, urlconf) and
File "/usr/local/lib/python2.7/dist-packages/django/middleware/common.py" in _is_valid_path
  164.         urlresolvers.resolve(path, urlconf)
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve
  416.     return get_resolver(urlconf).resolve(path)
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in resolve
  298.             for pattern in self.url_patterns:
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in url_patterns
  328.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in urlconf_module
  323.             self._urlconf_module = import_module(self.urlconf_name)
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py" in import_module
  35.     __import__(name)
File "/var/www/megenius/trunk/urls.py" in <module>
  27.     url(r'^works/', include('works.urls')),
File "/usr/local/lib/python2.7/dist-packages/django/conf/urls/__init__.py" in include
  24.         urlconf_module = import_module(urlconf_module)
File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py" in import_module
  35.     __import__(name)
File "/var/www/megenius/trunk/works/urls.py" in <module>
  2. from works.views import *
File "/var/www/megenius/trunk/works/views.py" in <module>
  9. from works.forms import WorkForm
File "/var/www/megenius/trunk/works/forms.py" in <module>
  10. class WorkForm(forms.Form):
File "/var/www/megenius/trunk/works/forms.py" in WorkForm
  31.             data_source_url=reverse('works-json-categories'),
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in reverse
  473.                       (prefix, resolver.reverse(view, *args, **kwargs)))
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in reverse
  360.         possibilities = self.reverse_dict.getlist(lookup_view)
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in reverse_dict
  276.             self._populate()
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in _populate
  242.         for pattern in reversed(self.url_patterns):
File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py" in url_patterns
  332.             raise ImproperlyConfigured("The included urlconf %s doesn't have any patterns in it" % self.urlconf_name)

Exception Type: ImproperlyConfigured at /works/add
Exception Value: The included urlconf urls doesn't have any patterns in it

问题可能是表单是在加载 url 之前定义的。

Django 1.4 将有一个reverse_lazy https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse-lazy可以解决这个问题的功能。您可以自己在项目中实现它(请参阅变更集 16121 https://code.djangoproject.com/changeset/16121).

或者,您可以在表单中设置小部件__init__方法代替。然后,在加载 url 后创建表单时会发生反向调用。

class WorkForm(forms.Form):
    # ...
    subcategory = forms.ChoiceField(
        required=True,
        label=_('SubCategory'),
        help_text=_('Which subcategory suits your work best.')
    )
    def __init__(self, *args, **kwargs):
        super(WorkForm, self).__init__(*args, **kwargs)
        self.fields['subcategory'].widget=DependantChoiceWidget(
            default_value=_('Select category first'),
            data_source_url=reverse('works-json-categories'),
            depends_on='category_id'
        ),
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 django 形式中使用reverse() 的相关文章

  • Python 切片对象和 __getitem__

    python 中是否有内部的东西来处理传递给的参数 getitem 不同 并自动转换start stop step构造成切片 这是我的意思的演示 class ExampleClass object def getitem self args
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • 按边距(“全部”)值列对 Pandas 数据透视表进行排序

    我试图根据 pandas 数据透视表中的行总和对最后一列 边距 aggrfunc 进行降序排序 我知道我在这里错过了一些简单的东西 但我无法弄清楚 数据框 数据透视表 WIDGETS DATE 2 1 16 2 2 16 2 3 16 Al
  • Mypy 无法从文字列表推断项目的类型

    我有一个变量x和一个文字列表 例如 0 1 2 我想转换x这些文字之一 如果x在列表中 我将其退回 否则我返回一个后备值 from typing import Literal Set Foo Literal 0 1 2 foos Set F
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 在Python上获取字典的前x个元素

    我是Python的新手 所以我尝试用Python获取字典的前50个元素 我有一本字典 它按值降序排列 k 0 l 0 for k in len dict d l 1 if l lt 51 print dict 举个小例子 dict d m
  • Arcpy 模数在 Pycharm 中不显示

    如何将 Arcpy 集成到 Pycharm 中 我尝试通过导入模块但它没有显示 我确实知道该模块仅适用于 2 x python arcpy 在 PyPi Python 包索引 上不可用 因此无法通过 pip 安装 要使用 arcpy 您需要
  • 运行 Python 单元测试,以便成功时不打印任何内容,失败时仅打印 AssertionError()

    我有一个标准单元测试格式的测试模块 class my test unittest TestCase def test 1 self tests def test 2 self tests etc 我的公司有一个专有的测试工具 它将作为命令行
  • Paste.httpserver 并通过 HTTP/1.1 Keep-alive 减慢速度;使用 httperf 和 ab 进行测试

    我有一个基于paste httpserver 的Web 服务器作为HTTP 和WSGI 之间的适配器 当我使用 httperf 进行性能测量时 如果每次使用 num conn 启动一个新请求 我每秒可以执行超过 1 000 个请求 如果我使
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • python中basestring和types.StringType之间的区别?

    有什么区别 isinstance foo types StringType and isinstance foo basestring 对于Python2 basestring是两者的基类str and unicode while type
  • 给定一个排序数组,就地删除重复项,使每个元素仅出现一次并返回新长度

    完整的问题 我开始在线学习 python 但对这个标记为简单的问题有疑问 给定一个排序数组 就地删除重复项 使得每个 元素只出现一次并返回新的长度 不分配 另一个数组的额外空间 您必须通过修改输入来完成此操作 数组就地 具有 O 1 额外内
  • 是否需要关闭没有引用它们的文件?

    作为一个完全的编程初学者 我试图理解打开和关闭文件的基本概念 我正在做的一项练习是创建一个脚本 允许我将内容从一个文件复制到另一个文件 in file open from file indata in file read out file
  • XPath:通过当前节点属性选择当前和下一个节点的文本

    首先 这是从我之前的问题 https stackoverflow com questions 5202187 xpath select current and next nodes text by current node attribut
  • Python bug - 或者我的愚蠢 - 扫描字符串文字时 EOL

    我看不出以下两行之间有显着差异 然而第一个解析 而后者则不解析 In 5 n Axis of Awesome In 6 n Axis of Awesome File
  • minizinc python 安装

    我通过 anaconda 提示符在 python 上安装了 minizinc 就像其他软件包一样 pip install minizinc 该软件包表示已成功安装 我可以导入该模块 但是 我正在遵循基本示例https minizinc py
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • 如何使用 python 定位和读取 Data Matrix 代码

    我正在尝试读取微管底部的数据矩阵条形码 我试过libdmtx http libdmtx sourceforge net 它有 python 绑定 当矩阵的点是方形时工作得相当好 但当矩阵的点是圆形时工作得更糟 如下所示 另一个复杂问题是在某
  • 定义在文本小部件中双击时选择哪些字符

    在 Windows 上 双击文本小部件中的单词也将选择连接的标点符号 有什么方法可以定义您想要选择的角色吗 tcl wordchars该变量的值是一个正则表达式 可以设置它来控制什么被视为 单词 字符 例如 通过双击 Tk 中的文本来选择单
  • 无法安装最新版本的 Numpy (1.22.3)

    我正在尝试安装最新版本的 numpy 即 1 22 3 但看起来 pip 无法找到最后一个版本 我知道我可以从源代码本地安装它 但我想了解为什么我无法使用 pip 安装它 PS 我有最新版本的pip 22 0 4 ERROR Could n

随机推荐

  • 发件人证书在签名验证之前已过期

    我正在开发一个关于 Java 中的证书和数字签名的项目 但我无法理解以下情况 文件发送者和接收者的证书在创建签名时有效 但当接收者收到文件时 发送者的证书已过期 这种情况是否有效 接收者可以正常验证签名 还是不能 还有一个问题 不可否认密钥
  • GLMakie 图 x 轴的量化失真。为什么?

    我使用创建一个简单的图GLMakie GLMakie scatter range 3e 9 1e 3 3e 9 1e 3 100 range 1 100 100 结果如下 看起来 x 轴被严重量化了 这Plots包可以很好地处理相同的命令
  • libpng 在 png_read_info() 上崩溃

    我正在尝试在 vs2013 中使用 libpng 1 2 10 读取 png 文件 我下载了最新的zlib并编译了pnglib 运行良好 现在我正在尝试加载一个文件 int w width int h height const char n
  • 在 Android 的异步任务线程中调用 invalidate 时出现问题!

    我试图从 asynctask 线程调用 invalidate 我收到此错误 10 18 15 14 30 469 错误 AndroidRuntime 889 导致 android view ViewRoot CalledFromWrongT
  • 如何获取 Lucene 索引中文档子集的顶级术语?

    我知道可以获取 Lucene 索引中的顶级术语 但是有没有办法根据 Lucene 索引的子集获取顶级术语 IE 特定日期范围内的文档索引中最重要的术语是什么 理想情况下 应该有一个实用程序可以执行此操作 但我不知道有这样的实用程序 然而 以
  • 根据字符集对单词进行聚类

    假设有一个单词集 我想根据它们的字符包 多重集 对它们进行聚类 例如 茶 吃 阿爸 阿阿 你好 将被聚类成 茶 吃 abba aabb 你好 abba and aabb聚集在一起是因为它们具有相同的字符包 即两个a和两个b 为了提高效率 我
  • 适用于 Windows 和 Mac 的 Node.js — 正斜杠、反斜杠修正

    有没有一种方法可以纠正从 Windows 到 Linux 和 Mac 的 Node js 中有关反斜杠与正斜杠的差异 Windows 在调用以下位置时需要反斜杠git bash 而 Mac Linux 需要正斜杠 我正在与 Mac 和 Wi
  • 如何将支持库小吃栏文本颜色设置为 android:textColor 以外的颜色?

    因此 我开始在设计支持库中使用新的 Snackbar 但我发现当您在主题中定义 android textColor 时 它会应用于 Snackbar 的文本颜色 如果您的主要文本颜色是深色 这显然是一个问题 有谁知道解决这个问题的方法或者对
  • 带有 ngmodel 的 Angular 2 动态表单示例导致“表达式在检查后已更改”

    我正在寻找使用这个example https angular io docs ts latest cookbook dynamic form htmlAngular 文档中提供了与 ngmodel 结合使用动态表单的功能 以便动态表单控件可
  • 路由器 waitOn 在每次渲染时等待订阅

    我有一条路线waitOn返回一个钩子Meteor subscribe 每次触发路线时 我都会看到我的旋转器loadingTemplate在查看实际数据之前先简单介绍一下 我本以为我只需要等待订阅下载一次 即第一次 如果我做错了 请提出更好的
  • 如何使用 Files.lines(...).forEach(...) 读取文件?

    我目前正在尝试从我拥有的纯文本文件中读取行 我在另一个 stackoverflow 上发现 用Java读取纯文本文件 https stackoverflow com questions 4716503 best way to read a
  • Angularjs ui 路由器正则表达式

    我正在尝试匹配 1 个可以有 2 种值的参数 当前 或至少包含 10 个密码的数字 我试过了 url history code current 0 9 10 当我使用这个正则表达式时 我的应用程序会转到history current 但是当
  • 克服 Windows Azure Sql 数据库 150 GB 大小限制

    SQL Azure 的数据库大小限制为 150 GB 我已多次阅读他们的文档并在网上搜索 但我不清楚这一点 使用联合是否允许开发人员超越 150 GB 的数据库 例如我可以有几个 150GB 的联邦成员吗 如果没有 我如何在 Windows
  • js 中的脚本

    我有一个jsp页面 我根据请求参数动态添加一些内容到页面 请求将返回一个数组 基于此我必须创建一个下拉列表 我想在更改另一个下拉菜单时执行此操作 因此只能使用 javascript 来完成 但我无法在 js 中使用 scriptlet 这真
  • Node.js 快速路由和控制器有什么区别?

    与传统的快速路线控制器相比 有什么不同或更强大的地方吗 如果您有一个 Express 应用程序并定义了模型 那么它是否会成为 MVC 应用程序 还是还有更多必要 我只是想知道我是否因为不升级到更合法的 控制器 而错过了节点表达应用程序中的额
  • 在 ASP.NET MVC 上使用绝对路径访问视图

    我正在尝试以这种方式访问 视图 return View Items Details aspx 我收到此错误 无法找到视图 Items Details aspx 或其主视图 搜索了以下位置 Items Details aspx 在 Items
  • 用于设置 IIS 环境变量的 PowerShell 脚本

    如何使用 PowerShell 自动执行以下步骤 转到 IIS 并选择一个网站 网站名称很可能会作为参数在脚本中传递 Go Inside the Configuration Editor Choose the aspNetCore Sect
  • 为什么 .NET Remoting 服务器无法向 Internet 客户端发送事件

    如您所知 NET Remoting 有一些限制 其中之一是服务器无法跨 NAT 防火墙向 Internet 客户端发送事件 这是一个证据 http social msdn microsoft com forums en US netfxre
  • 如何为自定义 B2B 应用程序添加 Apple ID?

    我正在尝试将自定义 B2B 应用程序添加到 iTunes 连接 从 Apple 文档看来应该有一个文本框来输入客户端 Apple ID 但我似乎没有类似的内容 Apple 文档如下所示苹果文档 https i stack imgur com
  • 在 django 形式中使用reverse()

    我正在尝试使用 django 的撤销 https docs djangoproject com en dev topics http urls reverse我的自定义小部件的 django 表单定义中的函数 但出现错误 Improperl