Django                
            CRUD в Django
        
        
            
    Поиск…
** Простейший пример CRUD **
Если вы обнаружите, что эти шаги незнакомы, подумайте о том, чтобы начать здесь . Обратите внимание, что эти шаги взяты из документации переполнения стека.
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
myproject / settings.py Установка приложения
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]
 Создайте файл urls.py в каталоге myapp и urls.py его следующим представлением. 
from django.conf.urls import url
from myapp import views
urlpatterns = [
    url(r'^$', views.index, name='index'),
    ]
 Обновите файл urls.py другим содержимым. 
from django.conf.urls import url
from django.contrib import admin
from django.conf.urls import include 
from myapp import views
urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^myapp/', include('myapp.urls')),
    url(r'^admin/', admin.site.urls),
]
 Создайте папку с именем templates в каталоге myapp . Затем создайте файл с именем index.html внутри каталога шаблонов . Заполните его следующим содержанием. 
<!DOCTYPE html>
<html>
<head>
    <title>myapp</title>
</head>
<body>
    <h2>Simplest Crud Example</h2>
    <p>This shows a list of names and lets you Create, Update and Delete them.</p>
    <h3>Add a Name</h3>
    <button>Create</button>
</body>
</html>
Нам также необходимо просмотреть index.html, который мы можем создать, отредактировав файл views.py следующим образом:
from django.shortcuts import render, redirect
# Create your views here.
def index(request):
    return render(request, 'index.html', {})
Теперь у вас есть база, от которой вы будете работать. Следующий шаг - создать модель. Это самый простой пример, поэтому в папке models.py добавьте следующий код.
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Name(models.Model):
    name_value = models.CharField(max_length=100)
    def __str__(self): # if Python 2 use __unicode__
        return self.name_value
Это создает модель объекта Name, которую мы добавим в базу данных со следующими командами из командной строки.
python manage.py createsuperuser 
python manage.py makemigrations
python manage.py migrate
Вы должны увидеть некоторые операции, выполненные Django. Они настраивают таблицы и создают суперпользователя, который может получить доступ к базе данных администратора из Django, представленного администратором. Говоря об этом, давайте зарегистрируем нашу новую модель с видом администратора. Перейдите к admin.py и добавьте следующий код.
from django.contrib import admin
from myapp.models import Name
# Register your models here.
admin.site.register(Name)
 Вернувшись в командную строку, вы теперь можете python manage.py runserver сервер с помощью команды python manage.py runserver . Вы можете посетить http: // localhost: 8000 / и посмотреть свое приложение. Затем перейдите к http: // localhost: 8000 / admin, чтобы вы могли добавить имя в свой проект. Войдите в систему и добавьте имя в таблицу MYAPP, поэтому мы сохранили ее просто, чтобы убедиться, что она меньше 100 символов. 
Чтобы получить доступ к названию, вам нужно отобразить его где-нибудь. Отредактируйте функцию index в файле views.py, чтобы получить все объекты Name из базы данных.
from django.shortcuts import render, redirect
from myapp.models import Name
# Create your views here.
def index(request):
    names_from_db = Name.objects.all()
    context_dict = {'names_from_context': names_from_db}
    return render(request, 'index.html', context_dict)
Теперь отредактируйте файл index.html следующим образом.
<!DOCTYPE html>
<html>
<head>
    <title>myapp</title>
</head>
<body>
    <h2>Simplest Crud Example</h2>
    <p>This shows a list of names and lets you Create, Update and Delete them.</p>
    {% if names_from_context %}
        <ul>
            {% for name in names_from_context %}
                <li>{{ name.name_value }}  <button>Delete</button> <button>Update</button></li>
            {% endfor %}
        </ul>
    {% else %}
        <h3>Please go to the admin and add a Name under 'MYAPP'</h3>
    {% endif %}
    <h3>Add a Name</h3>
    <button>Create</button>
</body>
</html>
Это демонстрирует чтение в CRUD. В каталоге myapp создайте файл forms.py. Добавьте следующий код:
from django import forms
from myapp.models import Name
class NameForm(forms.ModelForm):
    name_value = forms.CharField(max_length=100, help_text = "Enter a name")
    class Meta:
        model = Name
        fields = ('name_value',)
Обновите index.html следующим образом:
<!DOCTYPE html>
<html>
<head>
    <title>myapp</title>
</head>
<body>
    <h2>Simplest Crud Example</h2>
    <p>This shows a list of names and lets you Create, Update and Delete them.</p>
    {% if names_from_context %}
        <ul>
            {% for name in names_from_context %}
                <li>{{ name.name_value }}  <button>Delete</button> <button>Update</button></li>
            {% endfor %}
        </ul>
    {% else %}
        <h3>Please go to the admin and add a Name under 'MYAPP'</h3>
    {% endif %}
    <h3>Add a Name</h3>
    <form id="name_form" method="post" action="/">
        {% csrf_token %}
        {% for field in form.visible_fields %}
            {{ field.errors }}
            {{ field.help_text }}
            {{ field }}
        {% endfor %}
        <input type="submit" name="submit" value="Create">
    </form>
</body>
</html>
Затем обновите view.py следующим образом:
from django.shortcuts import render, redirect
from myapp.models import Name
from myapp.forms import NameForm
# Create your views here.
def index(request):
    names_from_db = Name.objects.all()
    form = NameForm()
    context_dict = {'names_from_context': names_from_db, 'form': form}
    if request.method == 'POST':
        form = NameForm(request.POST)
        if form.is_valid():
            form.save(commit=True)
            return render(request, 'index.html', context_dict)
        else:
            print(form.errors)    
    return render(request, 'index.html', context_dict)
Перезагрузите свой сервер, и теперь у вас должна быть рабочая версия приложения с созданным C в create.
TODO добавить обновление и удалить