2016-06-07 3 views
2

Я создаю веб-приложение django для администратора, которое в основном включает операции CRUD (создание, чтение, обновление и удаление). Мне нужны предложения/рекомендации по разработке форм. Я новичок в django и python и нуждаюсь в предложениях экспертов. В настоящее время я создал различные методы взглядов, какЛучшая практика разработки форм django для операций CRUD

def create(request): 
    --logic to add 
    return HttpResponseRedirect('/createproduct') 

def delete(request,obj_id):     
    result=products.objects.get(product_type=object_id).delete()        
    return HttpResponseRedirect('/listobjects/') 

def getObjects(request): 
    products= products.objects.order_by('product_type') 
    return render(request,'getProducts.html', 
       {'results': products}) 

и мой urls.py как ниже

url(r'^createproduct/$',create), 
url(r'^listobjects/',getObjects), 
url(r'^deleteproduct/(?P<object_id>\d+)/$',delete) 
+0

Я тоже новичок в Django, и одна вещь, которую я начал делать, и предложит вам сделать так же хорошо, как и исходное место, - посмотрите код администратора, который поставляется с Django в 'django/contrib/администратор/* '. Здесь вы можете увидеть несколько хороших примеров представлений, шаблонов и т. Д., Которые вы можете использовать напрямую, подражать или вдохновляться. – elethan

+0

Взгляните на классические представления Django. Существуют общие представления для объектов объектов, подробного отображения одного объекта, обновления объекта, создания нового объекта и т. Д. Кроме того, если вы хотите создать REST API, посмотрите на пакет Django Rest Framework. Виды на основе классов: https://docs.djangoproject.com/en/1.9/topics/class-based-views/ Django Rest Framework: http://www.django-rest-framework.org/#quickstart – denvaar

ответ

3

ваших операций CRUD кажется довольно простым, так что в этом случае попробуйте использовать Джанго Class Based Generic Views.

Как DOC государств, это одна из целей, они были созданы для: общих взглядов

Django были разработаны принять некоторые общие идиомы и шаблоны, найденные в развитии зрения и абстрактно их так, что вы можете быстро записывать общие представления данных без необходимости писать слишком много кода .

Мы можем распознать определенные общие задачи, например, отобразить список объектов и написать код, отображающий список любого объекта. Тогда рассматриваемая модель может быть передана как дополнительный аргумент URLconf.

Django поставляется с родовым видом сделать следующее:

  • список отображения и подробно страницы для одного объекта.
  • Настоящие объекты на основе даты в архивах года/месяца/дня, связанные детали и «последние» страницы.
  • Разрешить пользователям создавать, обновлять и удалять объекты - с разрешениями или без них.

Тогда вы можете создать свой forms и иметь хорошо продуманную кодовую базу.

0

Если все, что вам нужно, это действительно грубый интерфейс для моделей django, вы также можете использовать приложение django.contrib.admin, которое предназначено именно для этого. Просто дайте пользователям разрешения администратору только те объекты, которые им нужны.

См https://docs.djangoproject.com/en/1.9/ref/contrib/admin/

+0

Не уверен, почему я получаю downvoted, так как OP не дал никакой информации о требованиях, и я полагаю, что он вполне способен судить сам, если администратор подходит к его прецеденту. Во всяком случае, полезным дополнением к dvango generic CBVs, если вы создаете cruds, является дополнительным видом: https://django-extra-views.readthedocs.io/en/latest/ –

1

просмотров класса на основе являются ответом. С классами просмотров:

from django.views.generic.edit import (CreateView, DeleteView, UpdateView) 

class MyView(CreateView): 
    model = MyModel 

достаточно, чтобы дать вам рабочий вид. Замените CreateView на UpdateView и DeleteView. Это дает вам всю валидацию в вашей модели и автоматически сохраняет данные. Вы можете использовать представление списка для перечисления своих данных. Вы переопределяете методы в представлениях, чтобы изменить все, что вам нужно. Таким образом, вы не предоставляете не админы доступ к интерфейсу администратора. Храните админ-интерфейс для администраторов. Вы не должны создавать целые веб-сайты.

Кроме того, вместо использования функций в виде видов используйте TemplateView вместо django.views.generic. Это делает ваш код намного чище. Вы можете отделить сообщение от get, и иметь методы экземпляра, привязанные к вашему представлению.