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的实际项目。我发现这本书在开始时非常有用。