2016-11-10 4 views
0

У меня есть проект Django, и на одной из веб-страниц я хочу собрать некоторую информацию для проекта.Python Django- get или post?

В одном из полей имеется выпадающий список, из которого пользователь может выбрать имя члена команды, участвующей в проекте. В этом выпадающем списке есть ряд предопределенных вариантов, а также опция «Другое».

Если пользователь выбирает «другое», поле «выпадающий список» изменяется на «текстовое поле», и пользователь может ввести имя человека, которого они хотят выбрать. Когда они начинают печатать, база данных запрашивается на основе букв, которые они набрали до сих пор, и список доступных параметров (соответствующих введенным буквам) отображается под текстовым полем. Например, если пользователь набрал «D», список доступных опций, которые будут отображаться, может включать в себя: «Дэн», «Дэйв», «Дебби», но если они набрали «Да», список доступных опций который будет отображаться, будет включать только: «Дэн» & «Дейв».

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

jquery-2.2.2.min.js:4 POST http://localhost:8000/projects/5915/submit_3_5_ajax/ 500 (Internal Server Error) 

Я думал, что это может означать, что я с помощью неправильный метод, но я попытался использовать как Get & Post, и они оба дают ту же ошибку в консоли браузера ...

консоль питона также показывает эту ошибку:

ValueError: invalid literal for int() with base 10: '' 
[10/Nov/2016 14:05:38] "POST /projects/5915/submit_3_5_ajax/ HTTP/1.1" 500 21537 

в е ар, как я могу сказать, исключение происходит где-то внутри класса формы в моем forms.py файле:

class InfoForm(ValidatedForm): 
    ... 
    def __init__(self, *args, **kwargs): 
     ... 
     try: 
      who_will_organise = project.assigned.get(role=Role.O).employee.first_name + project.assigned.get(role=Role.O).employee.surname[0] # I just want to get the first character of the surname here... 
     except ObjectDoesNotExist: who_will_organise = None 

     ... 

    def save(self, commit=True): 
     ... 
     if data['who_will_organise']: 
      ... 
     else: 
      # The print statements I'm seeing in the console would indicate that this is where the exception is being thrown... 
      who_will_organise = Employee.objects.get(id=data['who_will_organise']) 
      try: 
       ... 
      except ... 
      ... 
     ... 
     return ... 

URL-адрес для страницы:

url(r'^(?P<project_id>\d+)/survey/$', views.survey, name='survey'), 

и view, что это призвание определяется :

def survey(request, project_id): 
    project = Project.objects.get(id=project_id) 
    survey = Survey.objects.get_or_create(project=project)[0] 

    context = { 
     'project': project, 
     'survey_form': SurveyInformationForm(instance=survey), 
    } 
    return render(request, 'projects/survey.html', context) 

Моя консоль браузер отображает следующие сообщения об ошибках:

POST http://localhost:8000/projects/5915/submit_3_5_ajax/ 500 (Internal Server Error) 

autosave_form.js:122 FAIL:(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i… 

FAIL:(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i… 

В консоли Python в моей командной строке, где я бегу сервер Python, я получаю сообщение об ошибке:

OperationalError: (1054, "Unknown column 'costing_addomit.group_id' in 'field list'") 
[10/Nov/2016 15:01:24] "GET /projects/pipeline/ HTTP/1.1" 500 337434 

Может кто-нибудь указать мне, что я делаю неправильно здесь?

+2

Не с деталью, которую вы указали; и непонятно, почему вы думаете, что это связано с получением сообщения vs. Вам нужно будет показать свои URL-адреса.py, view и полную ошибку, как показано на вкладке «Инструменты разработчика» браузера dev. –

+0

Извинения. Я добавил URL-адрес и посмотрю на вопрос. – someone2088

+0

URL-адрес, который вы публикуете, не содержит «.../survey/...» в нем ... – Javier

ответ

-1

Похоже, что вы производите String как Int.

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

Проверьте, где вы передаете int, или ожидаете, что значение null не будет равно null. Вероятно, проблема.

+0

Консоль python отображает «ValueError':« Файл »/.../site-packages/django/db/models/fields/__init__.py», строка 976, в get_prep_value return int (значение) ValueError: invalid literal для int() с базой 10: '' [10/ноябрь/2016 15:56:04] "POST/projects/5915/submit_3_5_ajax/HTTP/1.1" 500 21537', который, я думаю, может быть тем, говоря о? Я не могу найти строку 'return int (value)' в любом из кода, который я просматривал (urls.py, views.py, & forms.py), а также не смог обнаружить его ни в одном из файлы 'ajax.js', которые я только что нашел ... – someone2088

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