Django
CRUD w Django
Szukaj…
** Najprostszy przykład CRUD **
Jeśli te kroki są dla Ciebie nieznane, rozważ rozpoczęcie tutaj . Uwaga: te kroki pochodzą z dokumentacji przepełnienia stosu.
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
myproject / settings.py Zainstaluj aplikację
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
]
Utwórz plik o nazwie urls.py
w katalogu myapp i zaktualizuj go o następujący widok.
from django.conf.urls import url
from myapp import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
Zaktualizuj inny plik urls.py
o następującą treść.
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),
]
Utwórz folder o nazwie templates
w katalogu myapp . Następnie utwórz plik o nazwie index.html
w katalogu szablonów . Wypełnij go następującą treścią.
<!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>
Potrzebujemy również widoku, aby wyświetlić plik index.html, który możemy utworzyć, edytując plik views.py w następujący sposób:
from django.shortcuts import render, redirect
# Create your views here.
def index(request):
return render(request, 'index.html', {})
Masz teraz bazę, z której będziesz pracować. Następnym krokiem jest utworzenie modelu. To najprostszy możliwy przykład, dlatego w folderze models.py dodaj następujący kod.
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
Spowoduje to utworzenie modelu obiektu Name, który dodamy do bazy danych za pomocą następujących poleceń z wiersza poleceń.
python manage.py createsuperuser
python manage.py makemigrations
python manage.py migrate
Powinieneś zobaczyć niektóre operacje wykonywane przez Django. Te konfigurują tabele i tworzą superużytkownika, który może uzyskać dostęp do bazy danych administratora z widoku administratora opartego na Django. Mówiąc o tym, zarejestrujmy nasz nowy model w widoku administratora. Przejdź do admin.py i dodaj następujący kod.
from django.contrib import admin
from myapp.models import Name
# Register your models here.
admin.site.register(Name)
Z powrotem w wierszu poleceń możesz teraz uruchomić serwer za pomocą polecenia python manage.py runserver
. Powinieneś być w stanie odwiedzić http: // localhost: 8000 / i zobaczyć swoją aplikację. Następnie przejdź do http: // localhost: 8000 / admin , aby dodać nazwę do swojego projektu. Zaloguj się i dodaj Nazwę pod tabelą MYAPP, na przykład postaraliśmy się, aby zawierała ona mniej niż 100 znaków.
Aby uzyskać dostęp do nazwy, musisz ją gdzieś wyświetlić. Edytuj funkcję indeksu w obrębie views.py, aby uzyskać wszystkie obiekty Name z bazy danych.
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)
Teraz edytuj plik index.html w następujący sposób.
<!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>
To pokazuje odczyt w CRUD. W katalogu myapp utwórz plik forms.py. Dodaj następujący kod:
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',)
Zaktualizuj plik index.html w następujący sposób:
<!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>
Następnie zaktualizuj views.py w następujący sposób:
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)
Uruchom ponownie serwer i powinieneś mieć teraz działającą wersję aplikacji z zakończeniem tworzenia C.
DO ZROBIENIA dodaj aktualizację i usuń