在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) 基本上我想使用一个基于用户名列出对象的通用视图.现在,问题是,我该怎么做:
(r'^resources/$',
ListView.as_view(
queryset=Resources.objects.filter(user=request.user.username),
...
)
)
Run Code Online (Sandbox Code Playgroud)
我找不到访问HttpRequest(请求)对象的方法...或者我是否需要使用自己的视图并在那里进行所有对象选择?
由于基于类的视图在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文档中找不到"这样做"但如果有人写过这个,我很乐意阅读它.
我正在尝试做类似的事情:
在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的网站。我想将其中包含模式的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部分。
我想将一个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)
但我不知道这是否正确.有什么建议?
提前致谢.
我在我的一个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
我的应用程序具有以下网址条目:
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吗?如果是这样,他们将如何匹配上面的网址?
我正在关注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) 我正在关注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)
我不确定我做错了什么.我一直收到一条错误,上面写着"无法输入名称'网址'." 任何帮助,将不胜感激!
django ×10
django-urls ×10
python ×6
django-views ×3
regex ×2
django-login ×1
http-post ×1
routing ×1
url ×1