2013-07-16 3 views
3

Я занимаюсь обработкой разработки приложения Django. Я провел около 40-50 часов, исследуя Django, и я хорошо готовлю приложение!Django Отладка процесса отладки процесса

Тем не менее, я начинаю сталкиваться с «более серьезными» ошибками, так как некоторые могут их называть, поскольку я не могу выяснить из моей трассировки стека точно, какова настоящая проблема.

В принципе, я нажимаю ссылку на мою страницу, и эта ошибка выскакивает:

Метод

Запрос: GET Request URL:/счета/профиль/ Джанго Версия: 1.5.1 Тип Exception: ValueError Исключение Значение:
* вид userprofile.views.user_profile не возвращает объект HttpResponse *

это заставляет меня верить, что ошибка в файле мои взгляды, за исключением того, что я после учебник линия для. линии, и меня ведут к что ошибка может заключаться в том, как form.py используется для создания объекта HttpResponse.

код короче говоря, это,

form = UserProfileForm(request.POST, instance=request.user.profile) 
... 
args = {} 
args.update(csrf(request)) // security token 
args['form'] = form 
return render_to_response('profile.html', args) 

profile.html также, безусловно, хорошо, я проверил это, и я в основном называют это со страницы loggedin.html где я отображать действительный логин пользователя.

Большое спасибо за вашу помощь. Так что я обычно не задаю вопросов, но я застрял в этой проблеме только на 5-6 часов разработки. Постарайтесь не издеваться надо мной за то, что не понимаете эту вероятность - просто, но с ошибкой с нуля до нуля.

Кроме того, я бы предпочел в ответе, если бы вы могли указать, как вы решили решить эту ошибку, особенно указывая, как мое мышление есть и где коренное недоразумение.

И в своих ответах, только ссылаться на конкретные экземпляры документации, потому что я сделал много поиска, но, возможно, не сужен совсем к тому, что мой вопрос: D

Еще раз спасибо,

Джеймс

Комментарий One: Учебное пособие

Here is the tutorial я имею в виду. Я зацикливаюсь на выявлении ошибки, так как у меня есть весь код, и все работает, пока я не попытался щелкнуть гиперссылку. Я не испытываю до , где ошибка исходит.

Второй Комментарий: Соответствующий код

профиль_пользователя/views.py

def user_profile(request): 
    if request.method=='POST': 
     form = UserProfileForm(request.POST, instance=request.user.profile) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/accounts/loggedin') 
     else: 
      user = request.user 
      profile = user.profile 
      form = UserProfileForm(instance=profile) 

     args = {} 
     args.update(csrf(request)) // security token 
     args['form'] = form 
     return render_to_response('profile.html', args) 

MyApp urls.py, профиль_пользователя urls.py

(r'^accounts/', include ('userprofile.urls')), 
... 
url(r'^profile/$', 'userprofile.views.user_profile'), 
+0

Не могли бы вы разместить ссылку на учебник, за которым вы следуете? И скажите нам, в какой части вы застряли? – Kevin

+1

Привет, Джеймс. Вы в хороших руках с Django;) Не могли бы вы опубликовать код для всего представления вместе с вашим urls.py? –

+0

Я люблю его до сих пор. Я только что добавил ссылку, и я добавлю код через мгновение :) – jdero

ответ

4

Если это действительно ваш код просмотра, это простой отступ erro р.Оно должно быть:

def user_profile(request): 
    if request.method=='POST': 
     form = UserProfileForm(request.POST, instance=request.user.profile) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/accounts/loggedin') 
    else: 
     user = request.user 
     profile = user.profile 
     form = UserProfileForm(instance=profile) 

    args = {} 
    args.update(csrf(request)) // security token 
    args['form'] = form 
    return render_to_response('profile.html', args) 

Что происходит в том, что, когда request.METHOD является GET, нет else положения на начальном, если, таким образом, функция просмотра заканчивается без возврата ничего. Вместо этого вы хотите создать форму, добавить ее в контекст и сделать ее - либо потому, что это запрос GET, либо потому, что в форме были ошибки, и вы хотите переустановить контекст, чтобы показать эти ошибки, и разрешить пользователю исправить их.

+0

У меня есть tabspace, равное 3 ... Или вы ссылаетесь на то, что args ... не вложены правильно? – jdero

+1

'args' и все создание формы, да - они слишком отступы, поэтому их вызывают только при' request.method == 'POST'', а не 'form.is_valid()'. –

+0

Большое вам спасибо. У меня было ощущение, что это было нечто тривиальное. Меня действительно беспокоил запрос GET. Еще раз спасибо. – jdero

Смежные вопросы