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)


最后测试即可