在小黑框
django-admin startproject 项目名
把项目拖到python文件中
创建子应用python manage.py startapp 子应用名配置setting
注册子应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
]
注册模板页面
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
数据库链接
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST':'localhost',
'PORT':3306,
'USER':'root',
'PASSWORD':'123456789',
'NAME':'day7hdk2',
}
}
语言
LANGUAGE_CODE = 'zh-Hans'
时区
TIME_ZONE = 'Asia/Shanghai'
python中安装数据库 init
import pymysql pymysql.install_as_MySQLdb()创建模型类
from django.db import models
# Create your models here.
# 5. 新建一个干净项目,项目名为day7+姓名首拼+2
# 6. 编写种类Kind模型类,由种类名称kind_name组成,并自己添加3条数据
# 7. 编写商品Good模型类,商品名good_name、单价price、数量num、种类kind(外键),并自己添加测试数据
class Kind(models.Model):
kind_name=models.CharField(max_length=10,verbose_name='种类名称')
class Meta:
verbose_name='种类表'
verbose_name_plural=verbose_name
db_table='kind'
def __str__(self):
return self.kind_name
class Good(models.Model):
good_name=models.CharField(max_length=10,verbose_name='商品名')
price=models.IntegerField(default=0,verbose_name='单价')
num=models.IntegerField(default=0,verbose_name='数量')
kind=models.ForeignKey(to=Kind,on_delete=models.CASCADE,verbose_name='种类')
class Meta:
verbose_name='商品表'
verbose_name_plural=verbose_name
db_table='good'
def __str__(self):
return self.good_name
在admin中注册模型类
from django.contrib import admin from myapp.models import Kind from myapp.models import Good # Register your models here. admin.site.register(Kind) admin.site.register(Good)迁移文件
python manage.py makemigrations python manage.py migrate创建超级用户
python manage.py createsuperuser在子应用中新建urls
from django.contrib import admin
from django.urls import path,include
from myapp import urls
urlpatterns = [
path('admin/', admin.site.urls),
path('',include(urls))
]
from django.urls import path
from myapp import views
urlpatterns = [
path('kind/',views.kind.as_view()),
path('good/',views.good.as_view()),
path('add/',views.add.as_view()),
path('del//',views.delete.as_view()),
path('select/',views.select.as_view()),
path('update/',views.update.as_view()),
]
然后在View中输出
from django.shortcuts import render,redirect
from django.views import View
from django.http import HttpResponse
from myapp.models import Kind
from myapp.models import Good
# Create your views here.
# 主页面功能:
# 1.展示所有的种类信息
class kind(View):
def get(self,request):
data=Kind.objects.all()
return render(request,'kind.html',{'kind':data})
# 2.可以搜索商品信息
class select(View):
def get(self,request):
name=request.GET.get('good_name')
try:
data=Good.objects.get(good_name__contains=name)
except Exception as e:
print(e)
return HttpResponse("数据查询失败")
return HttpResponse(f"{data.good_name},{data.price},{data.num},{data.kind}")
# 3.可以新增商品信息
class add(View):
def post(self,request):
good_name=request.POST.get('good_name')
price = request.POST.get('price')
num = request.POST.get('num')
kind = request.POST.get('kind')
try:
Good.objects.create(
good_name=good_name,
price=price,
num=num,
# 注意这是外键需要用id
kind_id=kind,
)
except Exception as e:
print(e)
return HttpResponse("数据添加失败")
return redirect('/kind/')
# 4.点击种类名可以进入到指定种类下,展示对应种类的商品信息,并按照价格排序
class good(View):
def get(self,request,id):
data=Good.objects.filter(kind_id=id)
return render(request,'good.html',{'good':data})
# 商品信息页面功能:
# 1. 商品信息的修改
class update(View):
def get(self,request,id):
data=Good.objects.get(id=id)
return render(request,'index.html',{'goods':data})
def post(self, request, id):
good_name = request.POST.get('good_name')
price = request.POST.get('price')
num = request.POST.get('num')
kind = request.POST.get('kind')
try:
Good.objects.filter(id=id).update(
good_name=good_name,
price=price,
num=num,
kind_id=kind,
)
except Exception as e:
print(e)
return HttpResponse("修改失败")
return redirect('/kind/')
# 2. 商品信息的删除
class delete(View):
def get(self,request,id):
Good.objects.filter(id=id).delete()
return redirect('/kind/')
view中涉及的good.html页面
Title
| 编号 | 商品名 | 单价 | 数量 | 种类 | 操作 |
|---|---|---|---|---|---|
| {{ foo.id }} | {{ foo.good_name }} | {{ foo.price }} | {{ foo.num }} | {{ foo.kind }} | 删除 修改 |
Title
| 编号 | 种类名称 |
|---|---|
| {{ foo.id }} | {{ foo.kind_name }} |
Title



