Django框架-4
网页展示
商品首页展示
代码:
goods-views.py(子应用)
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse('商品首页')
def detail(request):
return HttpResponse('商品详情')
goods-urls.py(子应用)
from django.contrib import admin
from django.urls import path
from .views import index,detail
urlpatterns = [
path('index/', index),
path('detail/', detail),
]
djangoproject-urls.py(总项目)
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('goods/', include('goods.urls')),
]
goods-models.py(子应用)
from django.db import models
# Create your models here.
class Goods(models.Model):
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
name = models.CharField(max_length=50, verbose_name='商品名')
price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='价格')
stock = models.IntegerField(default=0, verbose_name='库存')
sales = models.IntegerField(default=0, verbose_name='销量')
class Meta:
db_table = 'tb_goods' # 数据表名
verbose_name = '商品' # 模型名称(单数)
verbose_name_plural = verbose_name # 模型名称(复数)
def __str__(self):
return '%s:%s' % (self.id, self.name)
goods-admin.py(子应用)
from django.contrib import admin
from .models import Goods
# Register your models here.
admin.site.register(Goods)
数据库迁移
cmd或者在pycharm中找到terminal
python manage.py makemigrations
python manage.py migrate
创建用户和密码
cmd或者在pycharm中找到terminal
python manage.py createsuperuser
更改本地化
djangoproject-setting.py
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans'
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/ShangHai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
html模版
新建一个文件在templates文件夹中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<title>在线商城</title>
<style>
.title {
width: 100%;
height: 100px;
text-align: center;
padding-top: 20px;
background: cornflowerblue;
font-size: 60px;
}
.con {
width: 100%;
height: 33px;
background: silver;
border: 2px solid chocolate;
}
span {
float: left;
width: 30%;
color: darkolivegreen;
font-size: 20px;
}
button {
float: right;
margin-right: 20px;
margin-top: 5px;
background-color: aquamarine;
}
</style>
</head>
<body>
<div class="title">商品信息</div>
{% for goods in infos %}
<div class='con'>
<span>商品编号: {{ goods.id }}</span> <span>商品名称: {{ goods.name }}
</span> <span>商品价格: {{ goods.price }}</span>
<a href="/goods/detail?id={{ goods.id }}"><button>购买</button></a>
</div>
</div>
{% endfor %}
</body>
</html>
传入html模板和数据库
子应用中的views.py文件中
from django.shortcuts import render
from django.http import HttpResponse
from goods.models import Goods
# Create your views here.
def index(request):
# 查数据库,不需要sql语句
# 通过模型获取数据库中的商品列表数据
# Goods类--》表 objects对象 ---》表的记录
goods_list = Goods.objects.all() # orm的封装 sql select * from tb_goods
# 上下文,用于传递给网页,字典类型
context = {'infos' : goods_list}
# print(goods_list)
# 返回网页
# return HttpResponse("商品首页")
return render(request,'index.html',context)
def detail(request):
return HttpResponse('商品详情')
商品详情页
新建html模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<title>商品详情页面</title>
<style>
span {
font-size: 20px;
color: blueviolet;
}
</style>
</head>
<body>
<h1>商品详情</h1>
<div class="detail_con">
<div>商品名称: <span>{{ goods.name }}</span></div>
<div>商品价格: <span>{{ goods.price }}</span></div>
<div>上架时间: <span>{{ goods.create_time }}</span></div>
</div>
</body>
</html>
子应用views.py
from django.shortcuts import render
from django.http import HttpResponse
from goods.models import Goods
from goods.models import Goods
# Create your views here.
def index(request):
# 查数据库,不需要sql语句
# 通过模型获取数据库中的商品列表数据
# Goods类--》表 objects对象 ---》表的记录
goods_list = Goods.objects.all() # orm的封装 sql select * from tb_goods
# 上下文,用于传递给网页,字典类型
context = {'infos' : goods_list}
# print(goods_list)
# 返回网页
# return HttpResponse("商品首页")
return render(request,'index.html',context)
def detail(request):
# 取得调用者传递过来的id参数
# url:http://127.0.0.1:8000/goods/detail/?id=3
goods_id = request.GET.get('id')
# 依据id访问数据库
goods = Goods.objects.get(id=goods_id)
context = {'goods' : goods}
return render(request,'detail.html',context)