
文章网址: https://efficientcoder.net/django-crud-generic-views-tutorial/
专案基本设定
直接使用 网站开发专题 week5 自订管理介面 的专案
然后直接新增一个 app 名称 contacts
python manage.py startapp contacts
修改 mysite/urls.py 档案,覆蓋以下程式码
from django.contrib import admin
from django.urls import include, path
from django.shortcuts import redirect
urlpatterns = [
path('', lambda req: redirect('/contacts/')),
path('contacts/', include('contacts.urls')),
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]开启 mysite/settings.py,在 INSTALLED_APPS 加入一行
'contacts.apps.ContactsConfig',
新增一个 contacts/urls.py 档案,贴上以下程式码
from django.urls import path
from . import views
app_name = 'contacts'
urlpatterns = [
]开启 contacts/models.py,覆蓋以下程式码
from django.db import models
from django.urls import reverse
class Contact(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
address = models.CharField(max_length=100)
phone = models.CharField(max_length=50)
def get_absolute_url(self):
return reverse('contacts:detail', kwargs={'pk': self.pk})执行以下的命令建立资料库
python manage.py makemigrations
python manage.py migrate

将 contacts/urls.py 档案覆蓋以下程式码
from django.urls import path
from . import views
app_name = 'contacts'
urlpatterns = [
path('', views.ContactList.as_view(), name='list'),
path('<int:pk>/', views.ContactDetail.as_view(), name='detail'),
path('create', views.ContactCreate.as_view(), name='create'),
path('<int:pk>/update/', views.ContactUpdate.as_view(), name='update'),
path('<int:pk>/delete/', views.ContactDelete.as_view(), name='delete'),
]开启 contacts/admin.py,覆蓋以下程式码
from django.contrib import admin from .models import Contact admin.site.register(Contact)
开启 contacts/views.py ,覆蓋以下程式码
from django.shortcuts import render
from django.urls import reverse_lazy
from django.views.generic import ListView, DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from .models import Contact
# Create your views here.
class ContactList(ListView):
model = Contact
class ContactDetail(DetailView):
model = Contact
class ContactCreate(CreateView):
fields='__all__'
model = Contact
success_url = reverse_lazy('contacts:list')
class ContactUpdate(UpdateView):
fields='__all__'
model = Contact
class ContactDelete(DeleteView):
model = Contact
success_url = reverse_lazy('contacts:list')新增设定样板档案
在 contacts 底下加入 templates 目录,以及在里面再新增一个目录 contacts
在 contacts/templates/contacts/ 底下新增一个档案 contact_list.html
并且贴上以下的程式码
<h1>Contacts</h1>
<table>
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Address</th>
<th>Phone</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<a href="/contacts/create">Create New</a>
{% for contact in object_list %}
<tr>
<td>{{ contact.name }}</td>
<td>{{ contact.email }}</td>
<td>{{ contact.address }}</td>
<td>{{ contact.phone }}</td>
<td>
<a href="{% url "contacts:detail" contact.id %}">details</a>
<a href="{% url "contacts:update" contact.id %}">edit</a>
<a href="{% url "contacts:delete" contact.id %}">delete</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>在 contacts/templates/contacts/ 底下新增一个档案 contact_detail.html
并贴上以下程式码
<h1>Contact Details</h1>
<p>Name: {{object.name}}</p>
<p>Email: {{object.email}}</p>
<p>Address: {{object.address}}</p>
<p>Phone: {{object.phone}}</p>
<a href="/">Go back.</a>在 contacts/templates/contacts/ 底下新增一个档案 contact_form.html
并贴上以下程式码
<h1>Contact Update</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>在 contacts/templates/contacts/ 底下新增一个档案 contact_confirm_delete.html
并贴上以下程式码
<h1>Contact Delete?</h1>
<form method="post">
{% csrf_token %}
Are you sure you want to delete this contact?
<input type="submit" value="Submit" />
</form>以下是样板完成的结果
测试结果
开启以下网址可以开启建立资料的表格
http://127.0.0.1:8000/contacts/create
依序输入表格中的资料并且按下 Submit 即可成功建立资料
资料详细
按下 Go back. 或是回到 http://127.0.0.1:8000/contacts/,即可看到刚刚新增的资料

- 受保护的内容: NAS 版 Mathbot 管理网站与 Linebot 启动方法 - 2024 年 11 月 15 日
- Realtime 啥鬼的 - 2021 年 6 月 15 日
- nodejs 数学游戏 - 2021 年 6 月 8 日





在〈简单模组_单表格资料库〉中有 1 则留言