Django从db检索数据以完成url模式

时间:2012-02-21 20:39:55

标签: django django-urls

我知道这是一个简单的问题,我只是没有得到什么......所以,谢谢你的耐心和建议。

我有一个视图,要求用户注册使用我们的应用程序。他/她提交的数据存储在数据库中,然后将其发送到另一个页面以设置应用程序:

#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)

我不需要将所有用户发送到同一页面'/ dev / leaguepage /',而是需要根据数据库中的PK将每个用户发送到他自己的页面,如:'/ dev / PrimaryKey /'我不确定如何在视图文件或URLs.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)

1 个答案:

答案 0 :(得分:2)

您可以在leaguePage上进行反向查找以进行重定向,传递解析模式所需的值。您需要为要反转的URL模式添加名称,但基本上语法为:

return HttpResponseRedirect(reverse('my_detail', args=(), kwargs={'id' : id}))

示例网址格式和视图:

urlpatterns = patterns('my_app.views',
    url(r'^my-pattern/(?P<id>\d+)/$', 'my_action', name='my_detail'),
)

def my_action(request, id):
    #do something

希望能帮到你。