admin 是 Django 预设的资料库内容管理介面。在开始之前,我们必须先将资料同步:
python manage.py createsuper
接着,建立一个管理者的帐号与密码:
python manage.py createsuperuser
管理者的帐号建立完成後,我们开启服务器并来到 http://127.0.0.1:8000/admin/
就会看到以下画面:
输入刚刚注册的帐号密码後,我们会看到这个介面:
此时任何资料都看不到,因为我们还没注册模型阿!
前往 restaurants/admin.py 内新增:
from django.contrib import admin
from restaurants.models import Restaurant, Food #新增
admin.site.register(Restaurant) #新增
admin.site.register(Food) #新增
改完储存後,当我们回到页面就能看见资料出现了!
但是当我们点进资料一看,会发现资料显示的相当简陋:
让我们回到 restaurants/admin.py 做修改:
from django.contrib import admin
from restaurants.models import Restaurant, Food
class RestaurantAdmin(admin.ModelAdmin): #新增
list_display = ('name', 'phone_number', 'address') # 资料表欲显示的栏位
class FoodAdmin(admin.ModelAdmin): #新增
list_display = ('name', 'price', 'food_restaurant')
list_filter = ('is_spicy',) #自定义的分类
admin.site.register(Restaurant, RestaurantAdmin) #修改
admin.site.register(Food, FoodAdmin) #修改
回到页面後,就能看见详细的资料栏位罗!
此外,我们也能直接在这里直接新建资料:
前往 restaurants/views.py ,新增:
from django.shortcuts import render
from restaurants.models import Restaurant, Food #引入model
def menu(request): #新增
restaurant_list = Restaurant.objects.all()
food_list = Food.objects.all()
return render(request, 'menu.html',locals())
用 all() 将所有物件都取出来,并且传至 menu.html 。
之後在 templates 中建立 menu.html :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Menu</title>
</head>
<body>
<h1>restaurants</h1>
{% for r in restaurant_list %}
<ul>
<li>restaurant name : {{ r.name }}</li>
<li>restaurant phone number : {{ r.phone_number }}</li>
<li>restaurant address : {{ r.address }}</li>
</ul>
{% endfor %}
<h1>foods</h1>
{% for f in food_list %}
<ul>
<li>food name : {{ f.name }}</li>
<li>food price : {{ f.price }}</li>
<li>food spicy : {{ f.is_spicy }}</li>
<li>food restaurant : {{ f.food_restaurant }}</li>
</ul>
{% endfor %}
</body>
</html>
我们能在 template 中使用类似 Python 的 for 回圈,使用方法如下:
{% for <element> in <list> %}
...
{% endfor %}
然後,在 urls.py 内引入刚刚新增的 menu :
from django.contrib import admin
from django.urls import path, re_path
from myapp.views import hello_world,add
from restaurants.views import menu #引入
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', hello_world),
re_path(r'add/(\d{1,2})/(\d{1,2})', add),
path('menu/', menu), #新增
]
最後前往 http://127.0.0.1:8000/menu/ ,便能看到以下画面:
如图,我们在 views.py 内将从 model 内的资料全部取出来,并成功显示於画面上了!
至此,30天的铁人赛终於告一段落了。
原本其实 Django 的部份应该还能讲更多的,总觉得有些抱歉呐。
虽然一路走来相当辛苦,但我相信一切都是值得的!
最後谢谢看到最後的各位,大家都辛苦了!谢谢!
阵列是一群相同资料型态的变数集合~ 就是将相同资料型态的varaible装在一起~ 学习目标: On...
上一篇介绍如何在Backtesting写策略,这篇会和大家介绍如何做参数的最佳化。 什麽是参数最佳化...
最後一天了,我来补充一些 Matplotlib 的小细节。 tick_params() 用於将格子边...
网站架构是骨头,布景主题是皮肤,Menu 是大肌肉 昨天【领域展开 12 式】 安装 Soledad...
【前言】 在执行这个 Project 之前呢,团队成员有开一次技术会议来详述 Project 的目...