Django从db检索数据以完成url模式
我知道这是一个简单的问题,我只是没有得到什么…所以谢谢你的耐心和建议 我有一个视图,要求用户注册使用我们的应用程序。他/她提交的数据存储在数据库中,并发送到另一个页面以设置应用程序:Django从db检索数据以完成url模式,django,django-urls,Django,Django Urls,我知道这是一个简单的问题,我只是没有得到什么…所以谢谢你的耐心和建议 我有一个视图,要求用户注册使用我们的应用程序。他/她提交的数据存储在数据库中,并发送到另一个页面以设置应用程序: #views.py def regPage(request, id=None): form = RegForm(request.POST or None, instance=id and UserRegistration.objects.get(id=id))
#views.py
def regPage(request, id=None):
form = RegForm(request.POST or None,
instance=id and UserRegistration.objects.get(id=id))
# Save new/edited pick
if request.method == 'POST' and form.is_valid():
form.save()
return HttpResponseRedirect('/dev/leaguepage/')
user_info = UserRegistration.objects.all()
context = {
'form':form,
'user_info' :user_info,
}
return render(request, 'regpage.html', context)
我需要根据数据库中的PK将每个用户发送到自己的页面,而不是将所有用户发送到同一页面“/dev/leaguepage/”,例如:“/dev/PrimaryKey/”,我不确定如何在views文件或url.py文件中实现这一点:
#urls.py
from django.conf.urls.defaults import patterns, include, url
from acme.dc_django import views
urlpatterns = patterns('',
url(r'^leaguepage/$','acme.dc_django.views.leaguePage'),
url(r'^$', 'acme.dc_django.views.regPage'),
)
谢谢你的帮助
dp
更新代码:
#url
url(r'^user/(?P<id>\d+)/$','acme.dc_django.views.leaguePage', name="league_page"),
#view
def regPage(request, id):
form = RegForm(request.POST)
# Save new/edited pick
if request.method == 'POST' and form.is_valid():
form.save()
return HttpResponseRedirect(reverse('league_page', kwargs={'id' :id}))
#return HttpResponseRedirect('/dev/leaguepage/')
user_info = UserRegistration.objects.all()
context = {
'form':form,
'user_info' :user_info,
}
return render(request, 'regpage.html', context)
#url
url(r“^user/(?P\d+)/$”,“acme.dc_django.views.leaguePage”,name=“leaguePage”),
#看法
def注册表页(请求,id):
form=RegForm(request.POST)
#保存新的/编辑的拾取
如果request.method==“POST”和form.is\u有效():
form.save()
返回HttpResponseRedirect(反向('league_page',kwargs={'id':id}))
#返回HttpResponseRedirect('/dev/leaguepage/'))
user\u info=UserRegistration.objects.all()
上下文={
“形式”:形式,
“用户信息”:用户信息,
}
返回呈现(请求'regpage.html',上下文)
您可以在leaguePage上执行反向查找以执行重定向,并传递解析模式所需的值。您需要向要反转的URL模式添加名称,但基本上语法是:
return HttpResponseRedirect(reverse('my_detail', args=(), kwargs={'id' : id}))
示例URL模式和视图:
urlpatterns = patterns('my_app.views',
url(r'^my-pattern/(?P<id>\d+)/$', 'my_action', name='my_detail'),
)
def my_action(request, id):
#do something
urlpatterns=patterns('my_app.views',
url(r“^my pattern/(?P\d+)/$”,“my_action”,name='my_detail'),
)
定义我的行动(请求,id):
#做点什么
希望这对您有所帮助。因此,如果我理解正确,我必须在URL.py页面中编写模式,然后使用此处的反向代码将args/kwargs提供给它,以获得我想要的响应。这是正确的。我将用一个URL的例子来补充我的答案。我不想成为一个害虫,但当我实现你的建议时,我得到了一个错误:
regPage()正好接受2个参数(1个给定)
我将用我在视图和URL中使用的确切代码更新上面的内容。我只和Django合作了一个月左右,我发现URL是最具挑战性的部分……不用担心。很高兴你把事情弄明白了。这本书有点老,但你可以看看Django的实际项目。我发现这本书在开始时非常有用。