标签: django-urls

Django将url命名为url,模板url标签无法识别

在projects/urls.py我有:

urlpatterns = patterns('bizteen.projects.views',
    url(r'^browse/$', 'browse', name='projects-browse-main'),
    url(r'^browse/(\d+)/$', 'browse', name='projects-browse'),
    url(r'^create/$', 'create', name='projects-create'),
    url(r'^(\d+)/$', 'view_project', name='projects-view'),
)
Run Code Online (Sandbox Code Playgroud)

在模板中,我有:

<a href="{% url projects-browse-main %}">Browse projects</a>
Run Code Online (Sandbox Code Playgroud)

但是出现错误.

TemplateSyntaxError at /

Caught an exception while rendering: Reverse for 'bizteen.projects-browse-main' with arguments '()' and keyword arguments '{}' not found.
Run Code Online (Sandbox Code Playgroud)

我能弄清楚的最多的是名称被视为视图而不是视图.为什么会这样?

来自bizteen.projects.views:

from django.shortcuts import render_to_response
from django.http import HttpResponse, HttpResponseRedirect
from bizteen.projects.models import Project, ProjectComment
from django.template import RequestContext

def browse(request, page=0):
    page_start = page * 25
    page_end = page_start + 25
    project_list = …
Run Code Online (Sandbox Code Playgroud)

django django-templates django-urls

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

如何从Django中的urls.py访问HttpRequest

基本上我想使用一个基于用户名列出对象的通用视图.现在,问题是,我该怎么做:

(r'^resources/$',
  ListView.as_view(
    queryset=Resources.objects.filter(user=request.user.username),
    ...
  )
)
Run Code Online (Sandbox Code Playgroud)

我找不到访问HttpRequest(请求)对象的方法...或者我是否需要使用自己的视图并在那里进行所有对象选择?

python django django-urls

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

Django:URL conf,url模板标记的最佳实践

由于基于类的视图在Django中变得更好,我在实现基于类的视图时遇到了"最佳实践"问题.它基本上归结为URL模板标记.

给出这样的urls.py:

urlpatterns = patterns('some_app.views', 
    url(r'^$', 'index', name='some_app_index')
)
Run Code Online (Sandbox Code Playgroud)

该标记可以采用视图的路径:

{% url some_app.views.index %}
Run Code Online (Sandbox Code Playgroud)

或网址的名称:

{% url some_app_index %}
Run Code Online (Sandbox Code Playgroud)

现在,使用基于类的url conf,最终会得到一个这样的url:

from some_app.views import Index

urlpatterns = patterns('', 
    url(r'^$', Index.as_view(), name='some_app_index')
)
Run Code Online (Sandbox Code Playgroud)

这意味着使用{% url some_app.views.index %}不再有效但{% url some_app_index %}仍然有效.(而且{% url some_app.views.Index.as_view %}似乎不是一个解决方案).


所以,我的问题是,从模板中引用URL confs的最佳做法是什么?

到目前为止,我发现使用path.to.view方法更好,因为它是干净的命名空间.但是,基于类的视图看起来越来越好,使用url名称是一个更好的方法吗?在这种情况下,命名空间完全依赖于应用程序开发人员设置的名称属性,其方式是将网址名称与其他应用程序分开...

思考?我在Django文档中找不到"这样做"但如果有人写过这个,我很乐意阅读它.

django django-templates django-urls django-views

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

基于Django类的视图的反向URL

我正在尝试做类似的事情:

在urls.py中:

...
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo:''})
...
Run Code Online (Sandbox Code Playgroud)

在views.py中

..
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id, 'foo':'bar'}))
...
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.我得到一个带有参数'()'和关键字参数'{'pk':'13240L','foo':'bar}'的'video_detail'的反转.

但这确实有效:

....
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id}))
...
Run Code Online (Sandbox Code Playgroud)

即.从反向调用中移除foo:bar.这样做的正确方法是什么,并在反向URL中传递额外的参数?

django django-urls django-views django-class-based-views

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

如何在Django中通过URL模式重定向?

我有一个基于Django的网站。我想将其中包含模式的URL重定向servertest到相同的URL,但servertest应替换为server-test

因此,例如,以下URL将被映射为重定向,如下所示:

http://acme.com/servertest/                        =>  http://acme.com/server-test/ 

http://acme.com/servertest/www.example.com         =>  http://acme.com/server-test/www.example.com

http://acme.com/servertest/www.example.com:8833    =>  http://acme.com/server-test/www.example.com:8833 
Run Code Online (Sandbox Code Playgroud)

我可以使用urls.py中的以下行来获取第一个示例:

http://acme.com/servertest/                        =>  http://acme.com/server-test/ 

http://acme.com/servertest/www.example.com         =>  http://acme.com/server-test/www.example.com

http://acme.com/servertest/www.example.com:8833    =>  http://acme.com/server-test/www.example.com:8833 
Run Code Online (Sandbox Code Playgroud)

不确定如何为其他用户执行此操作,因此仅替换了URL的servetest部分。

python django django-urls

5
推荐指数
2
解决办法
6163
查看次数

带有int参数的Django HttpResponseRedirect

我想将一个int参数(user_id)从登录视图传递到另一个视图.这可能在一个HttpResponseRedirect?我尝试这样的事情:

return HttpResponseRedirect("/profile/?user_id=user.id")
Run Code Online (Sandbox Code Playgroud)

虽然我的urlconf是:

(r'^profile/(?P<user_id>\d+)/$', '...')
Run Code Online (Sandbox Code Playgroud)

但我不知道这是否正确.有什么建议?

python django django-urls django-views

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

Django在进入注册页面时自动注销用户

提前致谢.

我在我的一个Django网站上遇到了一个问题.经过身份验证的用户可以访问注册页面.但客户提出这是一个问题.所以我试图纠正这个问题并最终得到以下解决方案.

这是一个好的解决方案吗?或者我怎样才能做到好?

进程应该是这样的,当登录用户尝试访问注册页面时,他应该自动从站点注销,然后重定向到注册页面.

我的代码是

def user_signup(request, template_name='profiles/profile_register_form.html'):
if request.user.is_authenticated():
    return custom_logout(request, next_page = "/accounts/register/")


def custom_logout(request, next_page='/'):
try:
    language = request.session['django_language']
except:
    language = False
response = logout(request, next_page=next_page)
if language:
    request.session['django_language'] = language
return response
Run Code Online (Sandbox Code Playgroud)

django django-urls django-authentication django-registration django-login

5
推荐指数
0
解决办法
1061
查看次数

如何在Django中使用主键对URL进行反向操作

我的应用程序具有以下网址条目:

url(r'^(?P<pk>\d+)/(?P<action>add|edit)/type/$', 'customer.views.edit', name='customer-edit'),
Run Code Online (Sandbox Code Playgroud)

我想反向发布到该网址。当我执行以下操作时,出现错误NoReverseMatch:

self.client.post(reverse('customer-edit'), {'something:'something'}, follow=True)
Run Code Online (Sandbox Code Playgroud)

这是完整的错误:NoReverseMatch:找不到带有参数“()”和关键字参数“ {}”的“ customer-edit”。

我需要反向传递args或kwargs吗?如果是这样,他们将如何匹配上面的网址?

python regex django http-post django-urls

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

在此服务器django上找不到请求的URL

我正在关注youtube教程,并收到错误...

得到一个错误

The requested URL /hello was not found on this server.
Run Code Online (Sandbox Code Playgroud)

网站/ urls.py

urlpatterns = patterns('',
    url(r'^hello/$', article.views.hello),
    ...
)
Run Code Online (Sandbox Code Playgroud)

文/ views.py

from django.shortcuts import render
from django.http import HttpResponse

def hello(request):
  name = 'mike'
  html = '<html><body> sup %s </body></html> ' %name
  return HttpRequest(html)
Run Code Online (Sandbox Code Playgroud)

网站/ settings.py

INSTALLED_APPS = (
    ...
    'article',
)
Run Code Online (Sandbox Code Playgroud)

python regex django django-urls

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

Django - URL路由问题(无法导入名称'urls')

我正在关注https://docs.djangoproject.com/en/1.7/intro/tutorial03/上的Django教程,并试图让索引视图显示出来.我已逐字尝试了页面上指定的代码,但继续收到错误.

民调/ urls.py:

from django.conf.urls import patterns, urls
    from polls import views

    urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'),
)
Run Code Online (Sandbox Code Playgroud)

mysite的/ urls.py:

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

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

)

最后,views.py中的索引方法:

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def index(request): 
    return HttpResponse("<h1>Hello world!</h1>");
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么.我一直收到一条错误,上面写着"无法输入名称'网址'." 任何帮助,将不胜感激!

python django url routing django-urls

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