Django
CRUD in Django
Suche…
** Einfachstes CRUD-Beispiel **
Wenn Sie diese Schritte nicht kennen, sollten Sie stattdessen hier beginnen. Beachten Sie, dass diese Schritte aus der Stack Overflow-Dokumentation stammen.
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
myproject / settings.py Installieren Sie die App
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
]
Erstellen urls.py
im myapp- Verzeichnis eine Datei mit dem Namen urls.py
und aktualisieren Sie sie mit der folgenden Ansicht.
from django.conf.urls import url
from myapp import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
Aktualisieren Sie die andere urls.py
Datei mit dem folgenden Inhalt.
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),
]
Erstellen Sie im myapp- Verzeichnis einen Ordner mit dem Namen templates
. Erstellen Sie dann eine Datei mit dem Namen index.html
im Vorlagenverzeichnis . Füllen Sie es mit folgendem Inhalt.
<!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>
Wir benötigen auch eine Ansicht, um index.html anzuzeigen, die wir erstellen können, indem Sie die Datei views.py wie folgt bearbeiten:
from django.shortcuts import render, redirect
# Create your views here.
def index(request):
return render(request, 'index.html', {})
Sie haben jetzt die Basis, an der Sie arbeiten werden. Der nächste Schritt ist das Erstellen eines Modells. Dies ist das einfachste mögliche Beispiel. Fügen Sie in Ihrem Ordner models.py den folgenden Code hinzu.
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
Dadurch wird ein Modell eines Namensobjekts erstellt, das mit den folgenden Befehlen von der Befehlszeile aus der Datenbank hinzugefügt wird.
python manage.py createsuperuser
python manage.py makemigrations
python manage.py migrate
Sie sollten einige Operationen von Django sehen. Diese richten die Tabellen ein und erstellen einen Superuser, der von einer Django-Administratoransicht aus auf die Verwaltungsdatenbank zugreifen kann. Apropos, registrieren wir unser neues Modell in der Admin-Ansicht. Gehen Sie zu admin.py und fügen Sie den folgenden Code hinzu.
from django.contrib import admin
from myapp.models import Name
# Register your models here.
admin.site.register(Name)
Zurück an der Kommandozeile können Sie den Server jetzt mit dem Befehl python manage.py runserver
. Sie sollten http: // localhost: 8000 / besuchen und Ihre App sehen können. Navigieren Sie dann zu http: // localhost: 8000 / admin, damit Sie Ihrem Projekt einen Namen hinzufügen können. Melden Sie sich an und geben Sie einen Namen unter der MYAPP-Tabelle ein. Wir haben es für das Beispiel einfach gehalten, stellen Sie also sicher, dass es weniger als 100 Zeichen ist.
Um auf den Namen zuzugreifen, müssen Sie ihn irgendwo anzeigen. Bearbeiten Sie die Indexfunktion in views.py , um alle Name-Objekte aus der Datenbank zu holen.
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)
Bearbeiten Sie nun die Datei index.html wie folgt.
<!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>
Das demonstriert das Lesen in CRUD. Erstellen Sie im myapp- Verzeichnis eine Datei forms.py. Fügen Sie den folgenden Code hinzu:
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',)
Aktualisieren Sie die index.html auf folgende Weise:
<!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>
Aktualisieren Sie anschließend die views.py auf folgende Weise:
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)
Starten Sie Ihren Server neu, und Sie sollten jetzt eine funktionierende Version der App mit dem erstellten C in create haben.
TODO Update hinzufügen und löschen