reverse在python中的用法_在django表单中使用reverse()

在尝试使用Django的reverse()函数于自定义表单的定义时,遇到了ImproperlyConfigured错误,提示urlconf没有模式。尽管其他页面正常工作,表单定义中的reverse()调用引发问题。错误堆栈显示问题可能源于urlconf的加载。解决方案可能包括检查works.urls的配置,确保其中包含正确的URL模式,避免硬编码URL。
摘要由CSDN通过智能技术生成

我试图在我的自定义小部件的django表单定义中使用django的reverse()函数,但遇到一个错误:ImproperlyConfigured

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

代码如下:

^{pr2}$

我很确定,我的works.url'的配置正确,因为所有其他页都按预期工作。在

有什么原因,为什么我不能在表单定义中使用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

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

2. from works.views import *

File "/var/www/megenius/trunk/works/views.py" in

9. from works.forms import WorkForm

File "/var/www/megenius/trunk/works/forms.py" in

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 实现美妆商城的用户登录功能,可以按照以下步骤进行: 1. 在 Django 项目创建一个名为 `accounts` 的应用。 2. 在 `accounts` 应用创建一个名为 `views.py` 的文件,并在其编写用户登录视图函数。例如: ```python from django.contrib.auth import authenticate, login from django.shortcuts import render, redirect from django.urls import reverse def login_view(request): if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect(reverse('home')) else: error = 'Invalid login credentials' return render(request, 'accounts/login.html', {'error': error}) else: return render(request, 'accounts/login.html') ``` 在上述代码,我们首先导入了 `authenticate` 和 `login` 函数,它们分别用于验证用户身份和登录用户。然后我们定义了一个名为 `login_view` 的视图函数,它接收一个 `request` 参数,并判断请求方法是否为 `POST`。如果是 `POST` 请求,则从请求获取用户名和密码,调用 `authenticate` 函数进行身份验证,如果验证通过,则调用 `login` 函数登录用户并重定向到主页。如果验证失败,则返回登录页面并显示错误信息。如果请求方法不是 `POST`,则直接返回登录页面。 3. 在 `accounts` 应用创建一个名为 `urls.py` 的文件,并在其定义用户登录的 URL 路由。例如: ```python from django.urls import path from . import views urlpatterns = [ path('login/', views.login_view, name='login'), ] ``` 在上述代码,我们定义了一个名为 `login` 的 URL 路由,它会匹配到 `login_view` 视图函数。 4. 在 Django 项目创建一个名为 `templates` 的目录,并在其创建一个名为 `accounts` 的子目录。在 `accounts` 目录创建一个名为 `login.html` 的模板文件,用于渲染用户登录页面。例如: ```html {% extends 'base.html' %} {% block content %} <h2>Login</h2> {% if error %} <p>{{ error }}</p> {% endif %} <form method="post"> {% csrf_token %} <label for="username">Username:</label> <input type="text" name="username" id="username" required> <br> <label for="password">Password:</label> <input type="password" name="password" id="password" required> <br> <input type="submit" value="Login"> </form> {% endblock %} ``` 在上述代码,我们使用Django 模板语言,在继承了基础模板 `base.html` 后,定义了一个名为 `content` 的块,用于渲染登录表单。在表单,我们使用了 `csrf_token` 标签来防止跨站点请求伪造攻击。登录表单包含了用户名和密码的输入框,以及一个提交按钮。 5. 在 Django 项目的 `settings.py` 文件配置认证后端。例如: ```python AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', ] ``` 在上述代码,我们将认证后端设置为 Django 默认的 `ModelBackend`,该后端使用 Django 自带的用户模型进行用户认证。 6. 最后,在 Django 项目的主 URL 路由配置文件,引入 `accounts` 应用的 URL 路由配置。例如: ```python from django.urls import include, path urlpatterns = [ path('accounts/', include('accounts.urls')), # ... ] ``` 在上述代码,我们将 `accounts` 应用的 URL 路由配置包含在主 URL 路由配置,以便 Django 能够正确地解析用户登录的 URL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值