我有一个包含一些应用程序的django项目.主urls.py包含我启用的应用程序中的urls.py,一切都很好.
现在我想配置项目,这样当你去http:// testsite /时,你会得到你去http:// testsite/app /时得到的页面.
我可以通过复制项目urls.py中的应用程序urls.py中的相应行来完成此操作,但这感觉很脏.
谁知道更好的方法?
注意:在给出第一个答案之前,这个问题已被大量编辑.
嗨,
我是django的新手,如果我遗漏了一些明显的东西,请道歉.
我有一个urls.py文件,看起来像这样:
urlpatterns = patterns(
'',
(r'^$', 'faros.lantern.views.home_page'),
(r'^login/$', 'django.contrib.auth.views.login'),
(r'^logout/$', 'django.contrib.auth.views.logout'),
(r'^about/$', 'faros.lantern.views.about_page_index', {}, 'about_page_index'),
(r'^about/(?P<page_id>([a-z0-9]+/)?)$', 'faros.lantern.views.about_page', {}, 'about_page'),
)
Run Code Online (Sandbox Code Playgroud)
看起来像这样:
def about_page_index(request):
try:
return render_to_response('lantern/about/index.html', context_instance=RequestContext(request))
except TemplateDoesNotExist:
raise Http404
def about_page(request, page_id):
page_id = page_id.strip('/ ')
try:
return render_to_response('lantern/about/' + page_id + '.html', context_instance=RequestContext(request))
except TemplateDoesNotExist:
raise Http404
Run Code Online (Sandbox Code Playgroud)
以及包含以下内容的模板:
<a href="{% url lantern.views.about_page_index %}">Contact</a>
<a href="{% url lantern.views.about_page page_id="contact" %}">Contact</a>
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
Caught an exception while rendering: Reverse for '<function about_page at 0x015EE730>' with arguments '()' …Run Code Online (Sandbox Code Playgroud) 有没有办法改变网址在django中打开管理站点?我不想使用默认/管理员网址.我是django的新手,所以请尝试提供更详细的信息.
即时通讯使用评论系统,现在,我想从网址评论中重新编写细分,并添加一个符号#,我想将页面seccion精确地移动到评论列表到最后一个评论用户 <a name=#{{comment.id}}?> username </a>
我发布评论时使用next来重定向usen:
{% get_comment_form for object as form %}
<form action="{% comment_form_target %}" method="POST">
{{ form }}
<input type="hidden" name="next" value="{{ object.get_absolute_url }}" />
<input type="submit" name="preview" class="submit-post" value="Preview"></td>
</form>
Run Code Online (Sandbox Code Playgroud)
但是在Django Doc中没有任何关于重写或定制器的评论redirect/url
任何的想法?
谢谢
我有两种不同的对象,我想在同一个URL下生活.一组对象需要传递给视图函数'foo',另一组需要传递给'bar'.
我目前正在使用大量的硬编码网址,如此...
urlpatterns = patterns('project.views',
(r'^a/$', 'foo'),
(r'^b/$', 'foo'),
(r'^c/$', 'foo'),
#...and so on until...
(r'^x/$', 'bar'),
(r'^y/$', 'bar'),
(r'^z/$', 'bar'),
)
Run Code Online (Sandbox Code Playgroud)
是否可以定义每种类型的URL列表,如...
foo_urls = ['a', 'b', 'c'] #...
bar_urls = ['x', 'y', 'z'] #...
Run Code Online (Sandbox Code Playgroud)
...然后根据这些列表检查传入的URL?(如果它在'foo_urls'中,发送到'project.views.foo';如果它在'bar_urls'中,发送到'project.views.bar')?
我仅限于保持此结构以保持与以前网站的URL的兼容性,但是对于简化我的urls.py的方法的任何建议将非常感激.
我想Django的网址只有2的替代品/module/in/或/module/out/
我正在使用
url(r'^(?P<status>\w+[in|out])/$',
'by_status',
name='module_by-status'),
Run Code Online (Sandbox Code Playgroud)
但是,它匹配其他模式,如/module/i/,/module/n/和/module/ou/.
任何提示都很赞赏:)
我确实看到另一个题为"如何使用django反向通用视图"和"django命名网址,通用视图"的问题,但我的问题有点不同,我不相信它是一个骗局.
码:
from django.views.generic import list_detail, create_update
from django.core.urlresolvers import reverse
from django.conf.urls.defaults import *
partners_add = {'form_class': FooForm,
'post_save_redirect': reverse('foo-list'),
}
urlpatterns = patterns('',
url(r'^foo/$', list_detail.object_list, foo_list, name='foo-list'),
url(r'^foo/add/$', create_update.create_object, foo_add, name='foo-add'),
)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行代码时,我收到错误"包含的urlconf bar.urls中没有任何模式".然后,当我将反向('foo-list')更改为'/ bar/foo /'时,它可以工作.但是,如果我在模板中调用{%url foo-list%},我会得到正确的URL并且代码可以工作.
添加反向也将破坏相同urlpatterns中具有相同错误的所有URL.
我在Python 2.6上运行Django 1.1
我目前有一个'博客'应用程序,它将根据用户名显示不同用户的博客帖子.这就是我的urls.py看起来像.
urlpatterns = patterns('blog.views',
url(r'^(?P<blog_author>[^/]+)/$', 'entries', name='blog'),
url(r'^(?P<blog_author>[^/]+)/(?P<entry_slug>[^/]+)/$', 'blog_entry', name='blog_entry'),
)
Run Code Online (Sandbox Code Playgroud)
因此,blog/authorname/将列出该特定作者的所有blogpost条目,blog/authorname/foo-post/并将呈现特定的博客帖子.我想要做的是永久地将校友成员的博客重定向到blog/alumni/authorname和blog/alumni/authorname/foo-post/.我在我的用户模型中添加了一个字段,用于指示用户是否是校友.
对于普通用户和校友,views功能基本相同.这是我到目前为止一直在尝试做的事情:在entries视图函数中,我添加了一些可以检查校友成员的行.如果某一个博客作者是校友,会HttpResponsePermanentRedirect以blogs/alumni/alumni_author/和自渲染部分是一样的,调用同一个entries视图功能.所以基本上,我的entries功能是尝试检查成员类型,为普通和校友成员呈现视图.
比如,在我的注册类的post方法中,如果用户已经注册,我想将用户重定向到登录页面,这很简单.
class Register(View):
...
def post(self, request):
# Some code to check if the email address is already in the db
message = {'message': 'You are already a member and registered the project. Please just log-in',
'registration_date': the_registered_date}# The form with the filled-in data is returned
return HttpResponseRedirect(reverse('accounts:login', kwargs = message))
Run Code Online (Sandbox Code Playgroud)
在我的urls.py中:
#urls.py
...
url(r'^login/{0,1}$', Login.as_view(), name='login', kwargs={'message': None, 'date': None}),
Run Code Online (Sandbox Code Playgroud)
这给了我错误信息:
Reverse for 'login' with arguments '()' and keyword arguments '{'message': 'You are already a member and registered the …Run Code Online (Sandbox Code Playgroud) 好的,我已经为此付出了30分钟以上的努力,所以在这里我处于堆栈溢出状态。
我有一个模板:
{% if user.is_authenticated %}
<a href="{% url 'admin' %}">
Admin
</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
并在urls.py中:
urlpatterns = [
path('admin', admin.site.urls, name = 'admin'),
path('', views.index, name ='index'),
]
Run Code Online (Sandbox Code Playgroud)
但是我仍然得到:NoReverseMatch在/
找不到与“ admin”相反的位置。“ admin”不是有效的视图函数或模式名称。
这是为什么?我什至进行了测试,并用index替换了admin,并将其重定向到views.index。我尝试将模式名称替换为其他所有名称,并尝试将其与url路径进行匹配(就像现在一样)。没运气!我刚打破django吗?