发布时间: 2024-04-10 10:20:00
refer to:
https://www.w3schools.com/django/django_create_project.php
10多年没写python web了。
python -m pip install Django==5.0.4
django-admin startproject pfsense_monitor_server
python manage.py runserver
假设这个新的app(model)叫做monitor
python manage.py startapp monitors 这个命令就会创建对应的文件夹
修改view文件:monitors/views.py
from django.shortcuts import render from django.http import HttpResponse # Create your views here. def monitors(request): return HttpResponse("hihihi")
创建对应的router:
from django.urls import path from . import views urlpatterns = [ path('monitors/', views.monitors, name='monitors'), ]
修改对应的root目录下的router: (url.py )
pfsense_monitor_server/urls.py from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('', include('monitors.urls')) ]
重启项目,访问 localhost:8000/monitors
修改 monitors/views.py
from django.http import HttpResponse from django.template import loader def monitors(request): template = loader.get_template('hi.html') return HttpResponse(template.render())
创建 monitors/templates/hi.html
<!DOCTYPE html> <html> <body> <h1>hihihi !</h1> <p>Welcome to my first Django project!</p> </body> </html>
在 pfsense_monitor_server/settings.py 文件中,增加:
@@ -37,6 +37,7 @@ INSTALLED_APPS = [ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', + 'monitors' ]
运行migrate:
python manage.py migrate
运行server python manage.py runserver , 访问, 可以看到效果
新增文件:app_name/monitors/models.py
from django.db import models class Monitor(models.Model): cpu_and_memory = models.CharField(max_length = 128*1024, help_text="cpu and memory information") disk = models.CharField(max_length=128*1024, help_text = "disk information") version = models.CharField(max_length=256, help_text = "pfsense version")
该model文件创建好之后,生成migration,并且执行:
python manage.py makemigrations monitors Migrations for 'monitors': monitors/migrations/0001_initial.py - Create model Monitor $ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, monitors, sessions Running migrations: Applying monitors.0001_initial... OK
然后进入到console ( shell ) 中测试: 下面的用法跟active record 非常雷同
python manage.py shell Python 3.8.3 (default, Feb 19 2023, 11:51:42) [GCC 9.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from monitors.models import Monitor >>> Monitor.objects.all() >>> a = Monitor(cpu_and_memory="cpu 100%, memory: 56%", disk="30%") >>> a.save() >>> a >>> Monitor.objects.all() ]> >>> Monitor.objects.all().values() >>> b = Monitor(cpu_and_memory="cpu 90%, memory: 26%", disk="50%") >>> b.save() >>> b.cpu_and_memory 'cpu 90%, memory: 26%' >>> b.delete() (1, {'monitors.Monitor': 1}) >>> b >>> Monitor.objects.all() ]> >>> Monitor.objects.all().values() >>> a = Monitor.objects.all().values()[0] >>> a.disk Traceback (most recent call last): File "", line 1, in AttributeError: 'dict' object has no attribute 'disk' >>> a.disk() Traceback (most recent call last): File "", line 1, in AttributeError: 'dict' object has no attribute 'disk' >>> a {'id': 1, 'cpu_and_memory': 'cpu 100%, memory: 56%', 'disk': '30%', 'version': ''} >>> a = Monitor.objects.all()[0] >>> a >>> a.disk '30%' >>> a.disk='66%' >>> a.save()
修改 your_app/views.py 内容如下:
from django.http import HttpResponse from django.template import loader from .models import Monitor def monitors(request): monitors = Monitor.objects.all().values() template = loader.get_template('index.html') context = { 'monitors': monitors } return HttpResponse(template.render(context, request))
修改template:
<html> <body> <h1> List </h1> <table> {% for x in monitors %} <tr> <td> {{ x.id }} </td> <td> {{ x.cpu_and_memory }} </td> <td> {{ x.disk }} </td> </tr> {% endfor %} </table> </body> </html>
重新启动,就可以看到结果了:
剩余没做的:
表单提交
纯api
分页
登录授权等
Back