在正则表达式与django没有匹配的情况下,有没有办法将默认参数传递给一个动作?
urlpatterns = patterns('',(r'^test/(?P<name>.*)?$','myview.displayName'))
#myview.py
def displayName(request,name):
# write name to response or something
Run Code Online (Sandbox Code Playgroud)
我已经尝试将urlpatterns中的第三个参数设置为包含'并且为name方法提供该方法的默认值的字典,但没有一个工作.name参数似乎总是为None.如果我可以设置默认值,我真的不想为None编码.
澄清:这是我正在改变它的一个例子.
def displayName(request,name='Steve'):
return HttpResponse(name)
#i also tried
urlpatterns = patterns('',
(r'^test/(?P<name>.*)?$',
'myview.displayName',
dict(name='Test')
)
)
Run Code Online (Sandbox Code Playgroud)
当我将浏览器指向视图时,它会显示文本"无"
有任何想法吗?
我正在寻找将两个参数中的任何一个传递给URL中的视图的最佳方法,而不允许任何其他参数.
例如,使用以下URL:
(r'^friends/requests', 'app.views.pendingFriends'),
(r'^friends/offers', 'app.views.pendingFriends'),
Run Code Online (Sandbox Code Playgroud)
如果可以将URL传递给视图,那么pendingFriends知道从哪个URL调用它就可以了.但是,我看不到这样做的方法.
相反,我可以将URL中的参数(requests或offers)提供给单个Django视图,
(r'^friends/(?P<type>\w+', 'app.views.pendingFriends'),
Run Code Online (Sandbox Code Playgroud)
这个论点将告诉pendingFriends我们该怎么做.但是,这留下了传递给URL的其他参数的可能性(除了requests和offers.)
理想情况下,我希望URL调度程序在无效参数传递给视图之前停止发生这种情况(通过404).所以我的问题是(a)这是最好的方法,(b)有没有办法约束传递给URL中的视图的参数requests或offers?
谢谢
我在编写Django应用程序时硬编码模板中的所有URL时犯了一个错误.
例如,我的链接看起来像:
<a href="/course/63/">Advanced Basketweaving</a>
Run Code Online (Sandbox Code Playgroud)
现在,我的客户坚决要求我更改类似于此链接的所有链接实例
<a href="/class/63/">Advanced Basketweaving</a>
Run Code Online (Sandbox Code Playgroud)
"课程"取代"课程"的地方.
用艾默生的话来说,愚蠢的一致性是小脑袋的大人物,所以我必须通过艰苦的寻找和替换操作来弥补我的错误.
在这里做什么是正确的?
如何将从特定模式开始的所有URL重定向到另一个?
描述:
我希望能够重定向如下:
/pattern1/step1/ to /pattern2/step1/
/pattern1/step2/ to /pattern2/step2/
/pattern1/continue/ to /pattern2/continue/
Run Code Online (Sandbox Code Playgroud)
在Django URL模式中执行此操作的最简单方法是什么?
我有一个简单的django设置,其中有一个名为' lists '的应用程序.我现在想要http://127.0.0.1:8000/lists显示这个应用程序.所以我将主urls.py更改为以下内容:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^lists/', include('lists.urls')),
url(r'^admin/', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)
我将位于lists-folder(我的app称为列表)的urls.py更改为以下内容:
from django.conf.urls import patterns, url
from lists import views
urlpatterns = patterns(
url(r'^$', views.index, name='index')
)
Run Code Online (Sandbox Code Playgroud)
据我所知,我完全按照django教程中的说明操作,但是当我访问http://127.0.0.1:8000/lists(没有斜杠)时,它给出了以下错误:
Page not found (404) Request Method: GET Request URL: http://127.0.0.1:8000/lists
Using the URLconf defined in companyLists.urls, Django tried these URL patterns, in this order:
^lists/
^admin/
The current URL, lists, didn't match …Run Code Online (Sandbox Code Playgroud) 我在django视图中有这个:
edit_url = reverse('ventas:clientes_edit',kwargs={'id':str(self.object.id)})
这在urls.py中:
url(r'^clientes/edit/(?P<pk>\d+)$',forms.ClienteUpdateView.as_view(), name="clientes_edit"),
当我通过ajax创建一个新客户时,我需要在JSON数据中返回一个带有id的反向URL以放入一系列用于编辑,删除的操作按钮......但总是我得到这个错误,我不知道如何完成它,这是完整的错误:
NoReverseMatch at /ventas/clientes/add/
Reverse for 'clientes_edit' with arguments '()' and keyword arguments '{'id': '38'}' not found.
有任何想法吗?
编辑:
Django版本是1.5
我正在尝试使用django提供的通用登录视图,这是我的urls.py:
url(r'^login/$', django.contrib.auth.views.login),
Run Code Online (Sandbox Code Playgroud)
当我运行服务器并转到
127.0.0.1
Run Code Online (Sandbox Code Playgroud)
它给了我一个
NameError at /
Run Code Online (Sandbox Code Playgroud)
话
name 'django' is not defined
Run Code Online (Sandbox Code Playgroud)
当我删除'django'并将其留在
contrib.auth.views.login
Run Code Online (Sandbox Code Playgroud)
它给了一个
NameError at /
Run Code Online (Sandbox Code Playgroud)
话
name 'contrib' is not defined
Run Code Online (Sandbox Code Playgroud)
任何想法为什么以及如何解决这个问题?
django django-urls django-generic-views nameerror django-login
现在,在我的模板中,我将导航中的链接硬着如下:
`base.html`
<a href="/about">About</a>
<a href="/contact">Contact</a>
<!-- etc -->
Run Code Online (Sandbox Code Playgroud)
在我的 urls.py
urlpatterns = patterns('',
url(r'^about/$', TemplateView.as_view(template_name='pages/about.html'), name='about'),
url(r'^contact/$', TemplateView.as_view(template_name='pages/contact.html'), name='contact'),
)
Run Code Online (Sandbox Code Playgroud)
有没有办法在我的base.html文件中引用urlpatterns,urls.py以便我随时更改它们,它反映了我的页面和模板的所有地方?就像是
<!-- what I would like to do -->
<a href="{{ reference_to_about_page }}">About</a>
<a href="{{ reference_to_contact_page }}">About</a>
Run Code Online (Sandbox Code Playgroud) 对许多人来说这可能是一个愚蠢的问题,但为什么我不能代替
谢谢.
编辑 - 两种方法:导入一些djangorestframework或tastypie并在我的应用程序中构建一个api,它将抛出json响应 VS 构建基于类的视图并告诉它返回json响应.使用第一个是否有任何巨大的优势?
这是来自models.py的课程:
class Person(models.Model):
name = models.CharField(max_length=64)
persnr = models.AutoField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)
这是我的看法:
def show_person(request, persnr):
pers = get_object_or_404(Person, pk=persnr)
context={'pers':pers}
return render(request, 'company/person.html', context)
Run Code Online (Sandbox Code Playgroud)
这是我的网址:
url(r'^show_person/(?P<persnr>\d+)', "company.views.show_person", name='show_person'),
Run Code Online (Sandbox Code Playgroud)
如何使用以下两个网址进入同一视图(show_person):
server/show_person/(persnr)
server/show_person/(name)
Run Code Online (Sandbox Code Playgroud) django ×10
django-urls ×10
python ×5
django-views ×2
django-login ×1
nameerror ×1
rest ×1
url-pattern ×1