基于django2.2的网页构建

摘要:
安装djangopipinstalldjango==2.2构建一个在线商城项目django adminlyghtprojectpythop启动项目pythonmanagement。pyrunserver页面访问效果http://127.0.0.1:8000建议项目的应用程序产品productsdjango adminstartappproducts在应用程序视图中编写一个请求页面,例如http://
  1. 安装django

    pip install django==2.2
    
  2. 建一个在线商城的项目

    django-admin startproject pyshop
    
  3. 启动项目

    python manage.py runserver
    
  4. 页面访问效果 http://127.0.0.1:8000

    基于django2.2的网页构建第1张

  5. 建议一个项目的app 产品 products

    django-admin startapp products
    
  6. 在app的 views 里面写一下 请求页面 比如 http://127.0.0.1:8000/products

    from django.shortcuts import render
    from django.http import HttpResponse
    
    
    def index(request):
        return HttpResponse('HelloWorld')
    
  7. 为了让 products能够访问 需要在app的urls(需要自己建) 及 项目的urls配置urlpatterns

    app的url配置:

    from django.urls import path
    from . import views
    
    
    urlpatterns = [
        path('', views.index),
    ]
    

    项目的url配置 他要包括app的url 组合起来用

    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('products/', include('products.urls')),
    
    ]
    
  8. 展示效果http://127.0.0.1:8000/products/

    基于django2.2的网页构建第2张

  9. 模型 对product 进行模型设计 实际上就是建表(python会按照模型建好的自己建表)

    from django.db import models
    
    # Create your models here.
    class Product(models.Model):
        name = models.CharField(max_length=255)
        price = models.FloatField()
        stock = models.IntegerField()
        image_url = models.CharField(max_length=2083)
    
  10. 在setting 加上 app的配置

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'products.apps.ProductsConfig',
    ]
    
  11. 创建product的model

    python manage.py makemigrations
    
    (venv) D:\PyShop>python manage.py makemigrations
    Migrations for 'products':
      products\migrations\0001_initial.py
        - Create model Product
    
    (venv) D:\PyShop>
    
        
    
    

    初始化的文件放在这里 products\migrations\0001_initial.py

  12. 根据生产的 初始化文件建表

    python manage.py migrate
    
    (venv) D:\PyShop>python manage.py migrate
    Operations to perform:
      Apply all migrations: admin, auth, contenttypes, products, sessions
    Running migrations:
      Applying contenttypes.0001_initial... OK
      Applying auth.0001_initial... OK
      Applying admin.0001_initial... OK
      Applying admin.0002_logentry_remove_auto_add... OK
      Applying admin.0003_logentry_add_action_flag_choices... OK
      Applying contenttypes.0002_remove_content_type_name... OK
      Applying auth.0002_alter_permission_name_max_length... OK
      Applying auth.0003_alter_user_email_max_length... OK
      Applying auth.0004_alter_user_username_opts... OK
      Applying auth.0005_alter_user_last_login_null... OK
      Applying auth.0006_require_contenttypes_0002... OK
      Applying auth.0007_alter_validators_add_error_messages... OK
      Applying auth.0008_alter_user_username_max_length... OK
      Applying auth.0009_alter_user_last_name_max_length... OK
      Applying auth.0010_alter_group_name_max_length... OK
      Applying auth.0011_update_proxy_permissions... OK
      Applying products.0001_initial... OK
      Applying sessions.0001_initial... OK
    
    (venv) D:\PyShop>
    
    
  13. 类似的 再建一个 offer的模型 包含 优惠券的代码 描述 和折扣

    class Offer(models.Model):
        code = models.CharField(max_length=10)
        description = models.CharField(max_length=256)
        discount = models.FloatField()
        
    同样去做迁移变化    
    (venv) D:\PyShop>python manage.py makemigrations
    Migrations for 'products':
      products\migrations\0002_offer.py
        - Create model Offer
    
    (venv) D:\PyShop>
        
    再去生成表
    (venv) D:\PyShop>python manage.py migrate
    Operations to perform:
      Apply all migrations: admin, auth, contenttypes, products, sessions
    Running migrations:
      Applying products.0002_offer... OK
    
    (venv) D:\PyShop>
    
    
  14. 创建超级管理员 admin

    (venv) D:\PyShop>python manage.py createsuperuser
    Username (leave blank to use 'work1'): admin
    Email address: dfwlai@163.com
    Password:
    Password (again):
    The password is too similar to the username.
    This password is too short. It must contain at least 8 characters.
    This password is too common.
    Bypass password validation and create user anyway? [y/N]: y
    Superuser created successfully.
    
    (venv) D:\PyShop>
    
    
  15. 在admin.py中注册我们的模型

    from django.contrib import admin
    from .models import Product
    # Register your models here.
    
    
    admin.site.register(Product)
    

    admin页面会显示如下

    基于django2.2的网页构建第3张

  16. 可以手动增加一个产品 橘子

    基于django2.2的网页构建第4张

  17. 展示效果如下

    基于django2.2的网页构建第5张

  18. 这个时候我们改一下 让产品字段按列表展出

    from django.contrib import admin
    from .models import Product
    # Register your models here.
    
    class ProductAdmin(admin.ModelAdmin):
        list_display = ('name','price','stock')
    
    admin.site.register(Product,ProductAdmin)
    

    效果

    基于django2.2的网页构建第6张

环境:python3.7.4 django 2.2 部署过程中遇到的问题:

1、报错:

  File "D:\Python\Python37-32\lib\site-packages\django\views\debug.py", line 332, in get_traceback_html

  t = DEBUG_ENGINE.from_string(fh.read())  

  UnicodeDecodeError: 'gbk' codec can't decode byte 0xa6 in position 9737: illegal multibyte sequence

解决:

  打开django/views下的debug.py文件,转到line331行:

   with Path(CURRENT_DIR, 'templates', 'technical_500.html').open() as fh

  将其改成:

    with Path(CURRENT_DIR, 'templates', 'technical_500.html').open(encoding="utf-8") as fh

就成功了。

3、django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

pip install PyMySQL pymsql 已经不用了

pip install mysqlclient 安装mysqlclient

wiki:

使用mysql 来当数据库
1、首先默认的setting的数据库配置
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
改为:  其中lzy  是database名字 我的本地库 root没有密码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'lzy',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': '',
    }
}


免责声明:文章转载自《基于django2.2的网页构建》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇git提交代码之git-GUI-Here提交三个屏保软件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

第七部分(二) 动态渲染页面爬取(Splash的安装和使用、Scrapy的安装、Docker的安装、Scrapy-Splash的安装,在Windows及Linux平台的安装)

二、 Splash的使用Splash是一个JavaSscript渲染服务,一个带有HTTP API的轻量级浏览器,同时对接了Python中的Twisted和QT库。使用它同样可以实现动态渲页面的抓取。Splash可以实现下面的这些功能:异步方式处理多个网页渲染过程;获取渲染后的页面的源代码或截图;通过关闭图片渲染或者使用Adblock规则来加快页面渲染速度...

python爬取免费西祠代理

#!/usr/local/bin/python3.7 """ @File : xicidaili.py @Time : 2020/06/02 @Author : Mozili """ import urllib.request import urllib.parse from lxml import etree import...

python之PIL库(Image模块)

PIL(Python Image Library)是python的第三方图像处理库,PIL的功能非常的强大,几乎被认定是Python的官方图像处理库了。 由于PIL仅支持到python2.7于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新的python3,而且扩容了很多特性,所以在python3我们可以直接安装Pillow。 我...

telegraf、influxDB、Grafana的安装与基本使用

目的理解influxDB的数据收集原理和方法为使用grafana分析数据及展示结作好准备介绍[收集数据]Telegraf 是一个用 Go 编写的代理程序,可收集系统和服务的统计数据,并写入到 InfluxDB 数据库。Telegraf 具有内存占用小的特点,通过插件系统开发人员可轻松添加支持其他服务的扩展。[存储数据]InfluxDB 是 Go 语言开发的...

Python——pyHook监听鼠标键盘事件

pyHook包为Windows中的全局鼠标和键盘事件提供回调。底层C库报告的信息包括事件的时间,事件发生的窗口名称,事件的值,任何键盘修饰符等。而正常工作需要pythoncom等操作系统的API的支持。 先链上一篇《pyHook和pythoncom的安装》。 然后开始讲pyHook的使用。 关于pyHook的使用,网上现存的大多教程如下: import p...

python-上传文件的几种方式

from requests_toolbelt import MultipartEncoder import requests # from_data上传文件,注意参数名propertyMessageXml data = MultipartEncoder(fields={'propertyMessageXml': ('filename', open('D:...