Django извлекает данные из базы данных, чтобы завершить шаблон URL - PullRequest
1 голос
/ 22 февраля 2012

Я знаю, что это простой вопрос, я просто ничего не понимаю ... так что спасибо за ваше терпение и совет.

У меня есть вид, который просит пользователя зарегистрироваться, чтобы использовать наше приложение. Данные, которые он / она представляет, хранятся в базе данных и отправляются на другую страницу для настройки приложения:

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

Спасибо за вашу помощь!

дп

Обновленный код:

#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 Ответ

2 голосов
/ 22 февраля 2012

Вы можете сделать обратный поиск на странице 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

Надеюсь, это поможет вам.

...