在project中创建app
- 一个Django包含了很多的app,每个app都有一个文件夹
python3 manage.py startapp appname创建一个文件夹。- 文件夹下添加view.py文件
- 文件夹下添加urls.py文件
- 在主app中urls.py中包含这个app中urls
在app使用model(database table)
- model 的class variables就是database中列
- models.py 增加model(table)
- 主app中settings.py INSTALLED_APPS中添加 app
python3 manage.py makemigrations appnamepython3 manage.py migrate
创建template
避免每次修改view都需要改动python的代码
- 在app文件夹中创建一个template/appname/index.html的文件
- 更新views.py(loader载入模板,render映射模板)
template教程 docs.djangoproject.com/en/3.2/topi…
Example with LTE admin
-
pip3 install django django-adminlte-3 -
django-admin startproject demoprojectto create a project. -
set
ALLOWED_HOSTS = ["*"]insetttings.pyto allow all ip. -
python3 manage.py startapp myappto create an app -
create a
myapp/template/myapp/show.html{% extends 'adminlte/base.html' %} {% block title %}Overview{% endblock %} {% block content %} <canvas id="myChart" width="400" height="400"></canvas> <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.0"></script> <script> var ctx = document.getElementById('myChart').getContext('2d'); var myChart = new Chart(ctx, { type: 'bar', data: { labels: {{x}}, datasets: [{ label: '# of Votes', data: {{y}}, backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }] }, options: { scales: { y: { beginAtZero: true } } } }); </script> {% endblock %} -
edit
views.pyinmyappfolderfrom django.shortcuts import render from django.http import HttpResponse from .models import MyOwnData # Create your views here. def index(request): if not MyOwnData.objects.count(): for i in range(10): item = MyOwnData() item.x = i item.y = 2*i item.save() x =list(MyOwnData.objects.values_list("x",flat=True)) y = list(MyOwnData.objects.values_list("y",flat=True)) return render(request,"myapp/show.html",{"x":x,"y":y}) -
add
urls.pyinmyappfolderfrom django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ] -
edit
urls.pyin main app folder to registerfrom django.contrib import admin from django.urls import path, include urlpatterns = [ path('myapp/', include('myapp.urls')), path('admin/', admin.site.urls), ] -
add
models.pyinmyappfolderfrom django.db import models # Create your models here. class MyOwnData(models.Model): x = models.FloatField(default=0.0) y = models.FloatField(default=0.0) -
edit
settings.pyto register modelINSTALLED_APPS = [ 'adminlte3', 'myapp.apps.MyappConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] -
python3 manage.py makemigrations myapp&&python3 manage.py migrate -
python3 manage.py runserver 0:6000