Django
CRUD i Django
Sök…
** Enklaste CRUD-exempel **
Om du tycker att dessa steg är okända, bör du börja här istället . Observera att dessa steg kommer från Stack Overflow Documentation.
django-admin startproject myproject
cd myproject
python manage.py startapp myapp
myproject / settings.py Installera appen
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
]
Skapa en fil som heter urls.py
i myapp- katalogen och uppdatera den med följande vy.
from django.conf.urls import url
from myapp import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
Uppdatera den andra urls.py
filen med följande innehåll.
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),
]
Skapa en mapp med namnet templates
inom mittpgm katalogen. Skapa sedan en fil som heter index.html
insidan av mallar katalogen. Fyll den med följande innehåll.
<!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>
Vi behöver också en vy för att visa index.html som vi kan skapa genom att redigera filen views.py så:
from django.shortcuts import render, redirect
# Create your views here.
def index(request):
return render(request, 'index.html', {})
Du har nu basen som du kommer att arbeta med. Nästa steg är att skapa en modell. Detta är det enklaste exemplet som är möjligt så lägg till följande kod i mappen 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
Detta skapar en modell av ett Namnobjekt som vi lägger till i databasen med följande kommandon från kommandoraden.
python manage.py createsuperuser
python manage.py makemigrations
python manage.py migrate
Du bör se några operationer utförda av Django. Dessa ställer upp tabellerna och skapar en superanvändare som har åtkomst till administraturdatabasen från en Django-driven administrationsvy. Om vi talar om det, kan vi registrera vår nya modell med adminvyn. Gå till admin.py och lägg till följande kod.
from django.contrib import admin
from myapp.models import Name
# Register your models here.
admin.site.register(Name)
Tillbaka på kommandoraden kan du nu spinna upp servern med kommandot python manage.py runserver
. Du bör kunna besöka http: // localhost: 8000 / och se din app. Vänligen navigera sedan till http: // localhost: 8000 / admin så att du kan lägga till ett namn till ditt projekt. Logga in och lägg till ett namn under MYAPP-tabellen, vi höll det enkelt för exemplet så se till att det är mindre än 100 tecken.
För att komma åt namnet måste du visa det någonstans. Redigera indexfunktionen inom views.py för att få alla Namnobjekten ur databasen.
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)
Redigera nu filen index.html till följande.
<!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>
Det visar Read in CRUD. Skapa en forms.py-fil i myapp- katalogen. Lägg till följande 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',)
Uppdatera index.html på följande sätt:
<!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>
Uppdatera sedan views.py på följande sätt:
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)
Starta om servern och du bör nu ha en fungerande version av appen med C i skapa fullbordad.
TODO lägga till uppdatering och radering