最简单的 CRUD 示例
如果你发现这些步骤不熟悉,请考虑从此处开始。请注意这些步骤来自 Stack Overflow Documentation。
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',
]
在 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),
]
在 myapp 目录中创建名为 templates
的文件夹。然后在 templates 目录中创建一个名为 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>
我们还需要一个视图来显示我们可以通过编辑 views.py 文件创建的 index.html ,如下所示: ****
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 视图注册我们的新模型。转到 admin.py 并添加以下代码。
from django.contrib import admin
from myapp.models import Name
# Register your models here.
admin.site.register(Name)
回到命令行,你现在可以使用 python manage.py runserver
命令启动服务器。你应该能够访问 http:// localhost:8000 / 并查看你的应用程序。请导航到 http:// localhost:8000 / admin, 以便为项目添加名称。登录并在 MYAPP 表下添加一个名称,我们为示例保持简单,因此请确保它少于 100 个字符。
要访问该名称,你需要在某处显示它。编辑 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>
接下来以下列方式更新 views.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 in create completed。
TODO 添加更新和删除