标签: django-urls

Django:任意数量的未命名urls.py参数

我有一个Django模型,包含大量字段和20000多个表行.为了方便人类可读的URL以及将大型列表分解为任意子列表的能力,我希望有一个如下所示的URL:

/browse/<name1>/<value1>/<name2>/<value2>/ .... etc ....
Run Code Online (Sandbox Code Playgroud)

其中'name'映射到model属性,'value'是该属性的搜索条件.每个"名称"将被视为类别,以返回类别匹配的模型实例的子集.

现在,这可以用GET参数处理,但我更喜欢用户和搜索引擎更可读的URL.这些URL子集将嵌入显示此模型的每个页面上,因此制作漂亮的URL似乎是值得的.

理想情况下,每个名称/值对将作为名为name1,name2等的参数传递给视图函数.但是,我不相信可以通过正则表达式的匹配文本定义命名模式.我错了吗?

所以,似乎我需要做这样的事情:

urlpatterns = patterns('',
    url(r'^browse/(?:([\w]+)/([\w]+)/)+$', 'app.views.view', name="model_browse"),
)
Run Code Online (Sandbox Code Playgroud)

看来这应该匹配任意两个名称/值对的集合.虽然它成功匹配,但它只将最后一个名称/值对作为参数传递给视图函数.我的猜测是每场比赛都会覆盖上一场比赛.在包含(?:...)+导致它的猜测下,我尝试了一个简单的重复模式:

urlpatterns = patterns('',
    url(r'^browse/([\w]+/)+$', 'app.views.view', name="model_browse"),
)
Run Code Online (Sandbox Code Playgroud)

...并且遇到了同样的问题,但这次*args只包括最后匹配的模式.

这是Django的url调度程序和/或Python的正则表达式支持的限制吗?似乎这些方法中的任何一个都应该有效.有没有办法实现这一点,而无需将URL中的每个可能的模型属性硬编码为可选(.*)模式?

python django django-urls

18
推荐指数
1
解决办法
5444
查看次数

将变量urlname传递给django模板中的url标记

我想做什么(对于最近更改'小部件' - 在这种情况下不是django小部件)是将urlname作为变量传递到我的模板中,然后像这样使用它:{% url sitechangeobject.urlname %}其中urlname是包含有效名称的字符串为了一个网址.

这可能吗?该模板一直打破说它无法找到sitechangeobject.urlname作为名称(这是非常正确的,它不存在).有没有办法让它看到变量?

如果没有其他方法可以解决这个问题,只是想我会检查.

谢谢!

python django django-templates django-urls

18
推荐指数
2
解决办法
1万
查看次数

'Manager'对象不可调用

我的观点不断出现此错误.我无法解决它,因为代码类似于djangos教程只是更改对象名称.这是我的views.py的代码:

from django.http import HttpResponse           
from django.template import Context, loader  
from django.shortcuts import render_to_response
from astonomyStuff.attendance.models import Member
from astonomyStuff.attendance.models import Non_Member
from astonomyStuff.attendance.models import Talk
from astonomyStuff.attendance.models import Event_Attendance      


# Create your views here.       
def talksIndex(request):
latest_talk = Talk.objects().all()
return render_to_response('talks/index.html', {'latest_talk': latest_talk})

def viewMembers(request):
members_List = Member.objects().all()
return render_to_response('members/index.html', {'members_List': members_List})
Run Code Online (Sandbox Code Playgroud)

然后我的urls.py看起来像这样:

urlpatterns = patterns('',
# Example:
# (r'^astonomyStuff/', include('astonomyStuff.foo.urls')),

# Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
# to INSTALLED_APPS to enable admin documentation:
# (r'^admin/doc/', …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-urls django-views

18
推荐指数
1
解决办法
1万
查看次数

Django AttributeError'tuple'对象没有属性'regex'

我正在使用django 1.8并且遇到麻烦.我想在我的项目中导入tinymce.当我抓住它时

AttributeError:元组'对象没有属性'正则表达式'

当我删除url.py中的url时它正在工作.这是我的代码.

url.py

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    # Examples:
    # url(r'^$', 'hizlinot.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),
    url(r'^admin/', include(admin.site.urls)),
    (r'^tinymce/', include('tinymce.urls')),

]
Run Code Online (Sandbox Code Playgroud)

settings.py

"""
Django settings for hizlinot project.

Generated by 'django-admin startproject' using Django 1.8.

For more information on this file, see
https://docs.djangoproject.com/en/1.8/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.8/ref/settings/
"""

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR …
Run Code Online (Sandbox Code Playgroud)

regex django django-urls python-2.7 django-1.8

18
推荐指数
1
解决办法
1万
查看次数

Django:从根开始的多个url模式跨文件传播

我想知道是否有可能将标准网址模式分布在多个文件中(在这种情况下是项目范围urls.py和几个特定于应用程序urls.py).

想象一下,该项目urls.py看起来像这样(得到了这个工作):

from django.conf.urls import patterns, include, url
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^user/signup/', 'registration.views.signup'),
    url(r'^user/confirm/(?P<code>\w{20})/', 'registration.views.confirm'),
    url(r'^user/profile/(\d+)/', 'profile.views.show'),
    url(r'^user/profile/edit/', 'profile.views.edit'), 
)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我有两个不同的应用程序都希望使用/ user/*的URL,因此我不能只使用r'^user/'include.

我的问题是:我可以将上面的内容分成两个单独的urls.py文件,每个文件都进入各自的应用程序吗?

注意:忽略输入的任何语法错误

python django django-urls

17
推荐指数
2
解决办法
2万
查看次数

Django'resolve':获取url名称而不是view_function

我的问题很简单,我有一个网址,我想解决它,但获取url名称而不是与之关联的视图功能...

例如......这是urlconf:

urlpatterns = patterns('',
...
    url('^/books/$', book_list, name="overview_books"),
...
)
Run Code Online (Sandbox Code Playgroud)

这就是我想要的:

>>> resolve('/books/')
'overview_books'
Run Code Online (Sandbox Code Playgroud)

你知道怎么办?

python django django-urls

16
推荐指数
2
解决办法
8341
查看次数

Django HttpResponseRedirect

我创建了一个基本的联系表单,当用户提交信息时,它应该重定向到Thank You页面.

这是我在views.py文件中的代码:

def contact(request):
    # if no errors...
    return HttpResponseRedirect('/thanks/')
Run Code Online (Sandbox Code Playgroud)

这是我在urls.py文件中的urlpatterns中所拥有的:

(r'^contact/$', contact),
(r'^contact/thanks/$', contact_thanks),
Run Code Online (Sandbox Code Playgroud)

这两个页面都在硬编码的URL上工作.但是,当我在/ contact /上提交表单时,它会重定向到/ contact(没有结束斜杠),这是一个不存在的页面(404或错误页面告诉我需要斜杠).它没有正确重定向的原因是什么,我该如何解决?谢谢.

更新:返回HttpResponseRedirect('/ contact/thanks /')是我现在拥有的,但问题是提交按钮(使用POST)不会重定向到URL - 它根本不重定向.

python django django-urls django-views

16
推荐指数
3
解决办法
7万
查看次数

Django:HttpResponse vs HttpResponseRedirect vs render_to_response有什么区别

上面提到的东西给了我几乎相同的结果,想知道它们的主要区别是什么.

django django-urls

15
推荐指数
1
解决办法
2万
查看次数

没有名为backends.default.urls的模块

所以我通过easy_install安装了django-registration.我正在按照快速入门指南进行操作,我正在尝试设置我的urlConf,但是它找不到名为backends.defauls.urls的模块.可能是什么问题?

import registration
(r'^accounts/', include('registration.backends.default.urls')),
Run Code Online (Sandbox Code Playgroud)

python django django-urls

15
推荐指数
2
解决办法
6259
查看次数

不允许使用/ Empty静态前缀不正确配置 - Django

我正在使用Django上传/显示图像.

该网站部署在Heroku上.

按照教程,我能够成功上传图像.

但是,图像未显示在模板中.

然后我了解到我的urls.py应该在最后有这一行:

+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)

我将此添加到我的urls.py的末尾,但现在我收到此错误:

ImproperlyConfigured at / Empty static prefix not permitted
Run Code Online (Sandbox Code Playgroud)

我在settings.py中有MEDIA_URL和MEDIA_ROOT,两者都不是空的.

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://example.com/media/", "http://media.example.com/"
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)

为什么会发生此错误以及如何解决?

以下是我认为urls.py的相关部分:

from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
import notifications
admin.autodiscover()

urlpatterns = patterns('',
    ....urls......

) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)

python django heroku django-urls static-files

15
推荐指数
2
解决办法
2万
查看次数