标签: django-urls

递归URL模式CMS样式

每当我学习一门新语言/框架时,我总会建立一个内容管理系统......

我正在学习Python和Django,我一直在制作一个能够选择正确页面的URL模式.

例如,对于单级URL模式,我有:

url(r'^(?P<segment>[-\w]+)/$', views.page_by_slug, name='pg_slug'),
Run Code Online (Sandbox Code Playgroud)

哪个适合网址,如:

http://localhost:8000/page/
Run Code Online (Sandbox Code Playgroud)

现在,我不确定是否可以让Django的URL系统返回一个slu a ala列表:

http://localhost:8000/parent/child/grandchild/
Run Code Online (Sandbox Code Playgroud)

将返回父母,孩子,孙子.

这就是Django已经做过的事情了吗?或者我是否修改原始URL模式以允许斜杠并在那里提取URL数据?

我在这里先向您的帮助表示感谢.

django django-urls

9
推荐指数
1
解决办法
1695
查看次数

Django Context处理器:是否可以在ContextProcessor中访问当前上下文?

有没有办法可以访问自定义上下文处理器中视图传递的当前上下文,这样我可以添加缺少的变量,如果我想要而不是覆盖现有变量?

我想要实现的目标:

我建我的网址是这样的/ city_slug /我要检查,如果城市变量在上下文中已经存在,否则我想城市添加到我的上下文(可使用存储在会话变量中最后使用的城市,否则默认一些城市,可能甚至设置会话变量以供下次使用.)

我觉得这是很常见的问题,你们怎么解决呢?

django django-urls django-context

9
推荐指数
1
解决办法
4146
查看次数

Django url templatetag(但不是rev​​erse())错误:渲染时捕获NoReverseMatch

我正在尝试使用url模板标记:

{% url all-labs-map %}
Run Code Online (Sandbox Code Playgroud)

但是当我查看页面时,我收到此错误:

Caught NoReverseMatch while rendering: Reverse for 'all-labs-map' with arguments '()' and keyword arguments '{}' not found.
Run Code Online (Sandbox Code Playgroud)

当我像这样使用模板标签时:

{% url gmaps.views.all_labs %}
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

这是URL conf:

urlpatterns = patterns('gmaps.views',
    url(r'^lab_list/$', 'all_labs', name="all-labs-map" ),
)
Run Code Online (Sandbox Code Playgroud)

我尝试使用django shell来查看命名URL是否存在问题,但是使用了

reverse('all-labs-map') 
Run Code Online (Sandbox Code Playgroud)

返回正确的URL.

关于发生了什么的任何想法?

谢谢!

迈季

编辑:

我在ubuntu上使用django 1.2与nginx服务器和gunicorn和virtualenv.我在使用库加载的自定义标记时遇到了另一个问题,但即使我使用了正确的标记注册语法,也无法识别标记本身.任何想法将非常感谢!

django django-urls

9
推荐指数
1
解决办法
1483
查看次数

如何在django中使用可选字段参数反转url?

我有一个带有optionnal参数的url:

urlpatterns = patterns(
    'my_app.views',
    url('schedule/(?P<calendar_id>\d+)/(?:month(?P<relative_month>[\+,\-]\d)/)$',
    'attribute_event',name='attribute_event')
)
Run Code Online (Sandbox Code Playgroud)

在我的模板中,我有一个链接:

{% url attribute_event calendar.id %}
Run Code Online (Sandbox Code Playgroud)

但我有一个错误,说这些arg不能反转url.我必须使用2个url正则表达式和url名称吗?!

django django-urls

9
推荐指数
1
解决办法
7368
查看次数

将请求重定向到管理界面

启用管理员界面并启动开发Web服务器(例如128.0.0.1:8000)后,我可以访问管理界面

128.0.0.1:8000/admin.
Run Code Online (Sandbox Code Playgroud)

显然是由于以下URL命名空间

url(r'^admin/', include(admin.site.urls)).
Run Code Online (Sandbox Code Playgroud)

我有什么要自动将128.0.0.1:8000/上的请求重定向到128.0.0.1:8000/admin?

URL命名空间

url(r'^$/', include(admin.site.urls))
Run Code Online (Sandbox Code Playgroud)

似乎不是解决方案.

django django-urls django-admin

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

如何在Django中进行用户的DetailView?

我目前有一个DetailView用于Django的内置功能User.

url(
    r'^users/(?P<pk>\d+)/$',
    DetailView.as_view(
        model = User,
        template_name = 'doors/users/detail.html'
    ),
    name = 'users_detail'
)
Run Code Online (Sandbox Code Playgroud)

但是当我user在模板中访问时,它会显示当前登录的用户,而不是具有pk我传递的用户DetailUser.我是否需要告诉DetailUseruser变量重命名为其他内容?如果是这样,我该怎么做?

python django django-templates django-urls

9
推荐指数
1
解决办法
3234
查看次数

如何在django-allauth上自定义activate_url?

我使用Django和Django REST框架作为后端,AngularJS作为前端.

对于用户管理,我使用的是django-rest-auth,它使用django-allauth进行用户管理.作为基础,我使用了django-rest-auth的demo.

问题出在注册后,当您尝试验证通过激活网址发送电子邮件的电子邮件时: 127.0.0.1:8000/account/confirm-email/yhca8kmijle0ia7k3p7ztbvnd2n1xepn9kyeuaycmlzll5xw19ubjarnvjrot7eu/

其中*127.0.0.1:8000是Django后端.

但在我的情况下,它应该发送类似的URL localhost:9000/#/verifyEmail/akv2dcvrfnk9ex5fho9jk0xx1ggtpfazmi8sfsoi2sbscoezywfp7kzcyqnizrc0.所以这个验证将从前端完成,localhost:9000我的AngularJS前端在哪里.

有没有办法在django-allauth上定制activate_url?

django django-urls angularjs django-rest-framework django-allauth

9
推荐指数
3
解决办法
2190
查看次数

Django和服务工作者 - 在应用程序的根URL上提供"sw.js"

所以我正在构建一个Django渐进式Web应用程序,使用服务工作者提供离线支持.

根据谷歌的文档,sw.js文件应该是应用程序URL的根目录:

您需要执行此操作,因为服务工作者的范围(ServiceWorker将加载的URL集)由其所在的目录定义.

目前,我正在从http://example.com/static/文件夹中提供所有静态资源.但我需要在以下网址上提供此特定文件:http://example.com/sw.js.

知道我怎么能做到这一点?我可以制定一个特定的nginx规则来执行此重定向,但我不知道这是否是最干净的方法.也许这个设置应该存在于urls.py中?

注意:我已经看到这个问题建议使用static()方法django.conf.urls.static.但是django的文档说静态方法仅供开发使用,对我不利.

注意(2):我想我可以更改STATIC_URL设置,但我对从/ static目录提供的文件感到满意.我只希望这个文件位于url的根目录下.

django django-urls django-staticfiles service-worker

9
推荐指数
2
解决办法
3739
查看次数

django 警告 urls.W005 URL 命名空间不唯一

我无法理解以下警告。我有一个名为“v1”的命名空间,我使用这些命名空间来确定 API 中的版本控制(使用 django Rest 框架)。所以,我有这样的路径:

/v1/accounts/me
/v1/listings
Run Code Online (Sandbox Code Playgroud)

这是 URL 配置 (project/urls.py):

urlpatterns = [
    path('admin/', admin.site.urls),
    path('v1/accounts/', include('accounts.urls', namespace='v1')),
    path('v1/listings/', include('listings.urls', namespace='v1'))
]
Run Code Online (Sandbox Code Playgroud)

账户/urls.py

app_name = 'accounts'

urlpatterns = [
    url(r'^token/$', views.obtain_auth_token, name='obtain_token'),
    url(r'^me/$', my_account, name='my_account'),
]
Run Code Online (Sandbox Code Playgroud)

清单/urls.py

app_name = 'listings'

urlpatterns = [
    path('', recent_listings, name='recent_listings')
]
Run Code Online (Sandbox Code Playgroud)

一切都按预期进行。所有网址均已发送。版本控制有效。但是,我不断收到以下错误:

?: (urls.W005) URL 命名空间“v1”不是唯一的。您可能无法反转此命名空间中的所有 URL

我知道这是一个警告,我也许可以抑制它;但是,我想了解为什么会发生这种情况。根据我的 URLconf 和此警告,似乎不能有多个命名空间路径作为“兄弟”。它们需要是一个命名空间路径的子级(例如“v1”)。如果我的理解是正确的,我应该如何创建这个 URL 配置。

python django django-urls

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

有没有办法通过自定义 HTTP 标头获取引用 URL?

我目前正在使用以下函数来获取参考视图:

def get_referer_view(request, default=None):   
    referer = request.META.get('HTTP_REFERER')
    if not referer:
        return default

    # remove the protocol and split the url at the slashes
    referer = re.sub('^https?:\/\/', '', referer).split('/')
    if referer[0] != request.META.get('SERVER_NAME'):
        return default

    # add the slash at the relative path's view and finished
    referer = u'/' + u'/'.join(referer[1:])
    return referer
Run Code Online (Sandbox Code Playgroud)

如果我view由于编程逻辑而重定向,例如..

return HttpResponseRedirect('dashboard')
Run Code Online (Sandbox Code Playgroud)

...有没有一种方法可以在不使用的情况下获取引用视图,HTTP_REFERER以便我可以在重定向中使用该变量view?这并不总是在浏览器的标头中设置。

请注意,因为视图是按语法重定向的,所以我无法使用 POST 来收集数据。

也许可以以某种方式设置和检索自定义标头?

django django-urls django-views

9
推荐指数
1
解决办法
640
查看次数