标签: django-urls

如何使用Django获取当前的url名称?

我必须根据当前的url动态构建一个url.使用{% url %}标记是最简单的方法,但我需要当前的url名称来动态生成新的标记.

如何将url名称附加到导致当前视图的urlconf?

编辑:我知道我可以手动手工使用网址,get_absolute_url但我宁愿避免它,因为它是一个讲座的一部分,我想只展示一种建立网址的方法.

学生知道如何使用{% url %}.当他们必须基于当前的URL生成更完整的URL时,他们知道面临问题.最简单的方法是{% url %}再次使用,有一些变化.由于我们已经命名了url,因此我们需要知道如何获取调用当前视图的url的名称.

编辑2:另一个用例是根据基本模板不同地显示基本模板的部分.还有其他方法可以做到这一点(使用CSS和{%block%},但有时如果视图名与链接匹配,则能够删除base.html菜单项的标记.

django django-urls urlconf

81
推荐指数
5
解决办法
6万
查看次数

没有尾部斜杠的django网址不会重定向

我在两台独立的计算机上安装了两个应用程序.在计算机A上,在urls.py文件中我有如下行:

(r'^cast/$', 'mySite.simulate.views.cast')
Run Code Online (Sandbox Code Playgroud)

该网址将会对工作都mySite.com/cast/mySite.com/cast.但是在计算机上有一个类似的URL写出来像:

(r'^login/$', 'mySite.myUser.views.login')
Run Code Online (Sandbox Code Playgroud)

出于某种原因,在计算机B上url mySite.com/login/将会工作但是mySite.com/login会挂起并且不会mySite.com/login/像计算机A那样直接返回.是否有我遗漏的东西?这两个url.py文件看起来都和我一样.

python django django-urls

78
推荐指数
3
解决办法
6万
查看次数

处理Django request.GET和多个变量用于相同的参数名称

在django视图等中,您可以访问request.GET ['variablename'],因此在您的视图中,您可以返回执行以下操作:

myvar = request.GET['myvar']
Run Code Online (Sandbox Code Playgroud)

实际的request.GET ['myvar']对象类型是:

<class 'django.http.QueryDict'>
Run Code Online (Sandbox Code Playgroud)

现在,如果你想为同一参数名传递多个变量,即

http://example.com/blah/?myvar=123&myvar=567

换句话说,您希望为参数myvar返回一个python 列表

基本上我想做的就是这样

for var in request.GET['myvar']:
    print(var)
Run Code Online (Sandbox Code Playgroud)

但是,当您尝试这样时,您只获得在url中传递的最后一个值,即在上面的示例中,您将得到567

shell中的结果将是:

5
6
7
Run Code Online (Sandbox Code Playgroud)

但是,当你打印request.GET它似乎有一个列表,即:

<QueryDict: {u'myvar': [u'123', u'567']}>
Run Code Online (Sandbox Code Playgroud)

好的更新:它的目的是返回最后一个值,我的用例是我需要一个列表.

来自django docs:

的QueryDict.getitem(key)返回给定键的值.如果键具有多个值,则 getitem()将返回最后一个值.如果密钥不存在,则引发django.utils.datastructures.MultiValueDictKeyError.(这是Python标准KeyError的子类,因此您可以坚持捕获KeyError

QueryDict.getlist(key)以Python列表的形式返回带有请求键的数据.如果密钥不存在,则返回空列表.它保证返回某种列表.

更新:如果有人知道为什么django dev已经这样做了,请让我知道,显示一个列表似乎反直觉,它不像一个.不是pythonic!

django django-urls django-views

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

使用{%url ??? django模板中的%}

我在google上看了很多关于如何在模板中使用'url'标签的答案,但却发现很多回复说'你只需将它插入模板并将其指向你想要的网址'.对我来说没有任何乐趣:(我已尽力尝试每一种排列,并在此作为最后手段使用.

所以这就是.我的urls.py看起来像这样:

from django.conf.urls.defaults import *
from login.views import *
from mainapp.views import *
import settings

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^weclaim/', include('weclaim.foo.urls')),
    (r'^login/', login_view),
    (r'^logout/', logout_view),
    ('^$', main_view),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
    # to INSTALLED_APPS to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    (r'^admin/', include(admin.site.urls)),
    #(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': '/home/arthur/Software/django/weclaim/templates/static'}),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-urls

70
推荐指数
5
解决办法
14万
查看次数

Django:在模板中获取当前页面的URL,包括参数

有没有办法在Django模板中获取当前页面URL及其所有参数?

例如,一个可以打印完整URL的模板标签 /foo/bar?param=1&baz=2

django django-templates django-urls

57
推荐指数
4
解决办法
7万
查看次数

Django URLS,如何将root映射到app?

我是django的新手,但在使用不同框架的Python和java web编程方面经验丰富.我已经把自己变成了一个不错的小django应用程序,但我似乎无法使它与www.mysite.com匹配而不是www.mysite.com/myapp.

我在urls.conf中定义了网址和视图,这些网址目前没有与应用程序分离(不介意).

urlpatterns = patterns('myapp.views',
  (r'^myapp/$', 'index'),
  (r'^myapp/(?P<some_id>\d+)/global_stats/$', 'global_stats'),
  (r'^myapp/(?P<some_id>\d+)/player/(?P<player_id>\d+)/$', 'player_stats'),
)
Run Code Online (Sandbox Code Playgroud)

所有这一切都像一个魅力.如果有人访问www.mysite.com/myapp,他们将点击我的索引视图,这会导致http重定向到我的"正确"默认网址.

那么,我怎样才能添加一个与(r'^ myapp/$','index')相同但不使用/ myapp的模式 - 也就是说,www.mysite.com就足够了?

我认为这将是非常基本的东西......我尝试添加如下行:

(r'^$', 'index'),
Run Code Online (Sandbox Code Playgroud)

然而这让我陷入了困境......

希望你在那里的django大师可以为我澄清这个!

django django-urls

53
推荐指数
6
解决办法
5万
查看次数

如何在上下文中重定向Django?

我有一个验证和保存表单的视图.保存表单后,我想重定向到list_object视图,并显示成功消息"客户xyz表单已成功更新..."

HttpResponseRedirect似乎不会起作用,因为它只有一个url参数,无法用它传递字典.

我已经尝试修改object_list的包装器,将dict作为具有必要上下文的参数.我从保存表单的视图内部返回对此包装器的调用.但是,在呈现页面时,url为'/ customer_form /'而不是'/ list_customers /'.我尝试修改请求对象,然后将其传递给object_list包装器,但这不起作用.

谢谢.

django django-urls

49
推荐指数
3
解决办法
4万
查看次数

使用django.shortcuts.redirect添加request.GET变量

可以在重定向中添加GET变量吗?(无需修改我的urls.py)

如果我做 redirect('url-name', x)

我明白了 HttpResponseRedirect('/my_long_url/%s/', x)

我没有抱怨使用HttpResponseRedirect('/my_long_url/%s/?q=something', x),但只是想知道......

django redirect django-urls django-views

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

链接到django管理站点

非常基本的问题,但我无法在网上追踪答案.我有一个模板,我想链接到django管理站点(即localhost:8000/admin).这是什么代码?

我在想象类似的东西

<a href="{% url admin.site.root %}">link to admin panel</a>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试上面的代码片段时,我得到:

Caught an exception while rendering:
  Reverse for 'project_name.django.contrib.admin.sites.root' with
  arguments '()' and keyword arguments '{}' not found.
Run Code Online (Sandbox Code Playgroud)

救命?

django django-templates django-urls django-admin

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

制作正则表达式Django URL令牌可选

你有一个URL接受first_namelast_nameDjango:

('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/$','some_method'),
Run Code Online (Sandbox Code Playgroud)

如何在title不创建任何新行的情况下包含可选URL令牌.我的意思是,在一个理想的情况下:

#A regex constant
OP_REGEX = r'THIS IS OPTIONAL<title>[a-z]'
#Ideal URL
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/OP_REGEX/$','some_method'),
Run Code Online (Sandbox Code Playgroud)

如果没有创建新线,这是否可行

('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/(?P<title>[a-zA-Z]+)/$','some_method'),
Run Code Online (Sandbox Code Playgroud)

regex django url django-urls

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