2013-05-01 4 views
0

Вот одна из функций, я с помощью платформы отдыха Джанго:с использованием рамок отдыха Джанго правильно

elif request.method == 'POST': 
    text = request.POST.get('text') 
    request_to_meet = request.POST.get('request') 
    startup = request.POST.get('startup') 
    to_user_id = request.POST.get('tid') 

    try: 
     to_user = User.objects.get(pk=to_user_id) 
    except User.DoesNotExist: 
     to_user = None 

    if 'conversation_id' in request.POST: 
     conversation_id = request.POST.get('conversation_id') 
    else: 
     conversation_id = 0 

    ct = Chat.objects.create(
     from_user=user, 
     to_user=to_user, 
     text=text, 
     startup=startup, 
     request=request_to_meet, 
     conversation_id=conversation_id) 

    serializer = ChatSerializer(ct, many=False) 
    return Response(serializer.data) 

Могу ли я с помощью платформы правильно? Мне нужно было использовать функцию create (model function in django вместо использования функции сохранения сериализатора.Это правильный путь к правильному коду api? Спасибо!

ответ

0

Позвольте мне предисловие, сказав, что я новичок в каркасе отдыха django.

Основные вещи, которые я вижу, являются:

  1. вы используете api_view декоратора, который обеспечивает бесплатный веб на основе документации ваших методов API

  2. Использование request.DATA будет автоматически сопоставляет запросы с JSON в теле и типе контента application/json переменным.

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

0

Прежде всего; если он работает, и код, который вы производите, легко читается и поддерживается, все остальное является бонусом.

Итак, я узнал из Django Rest Framework, что у них есть около миллиона способов сделать что-либо, каждый из которых имеет различную многословие/контроль.

Трудно сказать, действительно ли то, как вы делаете, оптимально в отношении того, что DRF уже запекала для вас, поскольку вы не указали подробно о том, что именно вы хотите сделать в эта функция. Однако, на первый взгляд, похоже, что вы делаете много шаблонов, которые, вероятно, уже делают для вас.

Вы просмотрели их tutorial? Это довольно хорошо, если немного длиннее. Я обнаружил, что почти весь код, который они говорят вам писать в начале, позже заменяется гораздо более элегантным кодом, о котором они рассказывают в конце (досадно).

Если вы можете дать еще несколько подробностей вашей точной цели (например, эта функция должна выполнять x, если это запрос типа y, иначе blah blah), то я могу привести несколько примеров того, как я это сделаю в DRF.

P.S.

Вы можете переписать этот бит:

if 'conversation_id' in request.POST: 
    conversation_id = request.POST.get('conversation_id') 
else: 
    conversation_id = 0 

в это:

conversation_id = request.POST.get('conversation_id', 0) 

и он будет делать то же самое.

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