# python **Repository Path**: bolsters/python ## Basic Information - **Project Name**: python - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2018-11-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 运行环境: python 版本: python 3.6.3 Django 版本: 2.1.3 编译器版本: JetBrains PyCharm Community Edition 2017.2.3 x64 数据库版本: SQLite Expert version 5.0 相关问题: 查看python版本 `python --version` 难易程度: 初级 ### 运行: PyCharm自带Terminal: `python manage.py runserver` ### 运行结果: > 前台页面: > > 首页: ![home页面](README_IMG/head/home.png) > > 书籍详情页面: ![书籍详情页面:](README_IMG/head/book-detail.jpg) ![书籍详情页面:](README_IMG/head/book-detail.png) > > 排行页面: ![排行页面](README_IMG/head/ranking.png) > > 排行页面书籍详情页面: ![排行页面书籍详情页面](README_IMG/head/ranking-detail.png) > > 更多页面: ![排行页面](README_IMG/head/404.png) > > 关于页面: ![排行页面](README_IMG/head/about.png) > > 后台管理页面: > > 所有数据: ![所有数据](README_IMG/foot/books.png) > > article页面: ![article页面](README_IMG/foot/article.png) > > article-detail页面: ![article-detail页面](README_IMG/foot/article-detail.png) > > ranking页面: ![ranking页面](README_IMG/foot/rankings.png) > > ### 如何实现 #### 1. 创建Django项目 + 安装: pip install django + 新建项目: django-admin.py startproject project + project为项目名称 + 运行项目: python manage.py runserver + 项目目录详情: ``` project ├── manage.py └── project ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py ``` + 项目目录介绍 + setting.py: 配置文件 + BASE_DIR: 项目根目录 + SECRET_KEY: 项目的安全码 + DEBUG = True/False: 调试开关 + ALLOWED_HOSTS: 访问主机列表,不为空则只能通过列表里的域名、IP来访问网站 + INSTALLED_APPS: 项目的应用列表,若创建了一个应用,要把应用名写在列表里 + `__init__.py`: Python中声明模块的文件 内容默认为空 #### 2.建立一个 books 页面 + 创建books页面: python manage.py startapp books + 整个项目的结构: ``` ── book │ ├── __init__.py │ ├── admin.py │ ├── migrations │ │ └── __init__.py │ ├── models.py │ ├── tests.py │ └── views.py ├── db.sqlite3 ├── manage.py ├── project ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-34.pyc │ ├── settings.cpython-34.pyc │ ├── urls.cpython-34.pyc │ └── wsgi.cpython-34.pyc ├── settings.py ├── urls.py └── wsgi.py ``` + 项目目录介绍: + migrations 数据移植(迁移)模块 + 内容自动生成 + admin.py 该应用发后台管理系统配置 + apps.py该应用的一些配置Django-1.9以后自动生成 + models.py数据模块使用ORM框架 + tests.py自动化测试模块 + Django提供了自动化测试功能 在这里编写测试脚本(语句) + views.py执行响应的代码所在模块 代码逻辑处理的主要地方 项目中大部分代码均在这里编写 #### 创建超级用户: admin + 创建超级管理员 命令行输入: + python manage.py createsuperuser + 接下来输入用户名称: >>Username(leave bkank to use 'administrator'): root + 然后是输入邮箱: >>Email address:(输入你的邮箱账号) + 输入密码(输入密码时不会显示出来,并且长度必须超过八位才行,设置简单的密码会创建失败): + `>>Password:******** `` + `>>Password(again):********`` + 当两次密码输入相同且超过八位的时候,就会提示创建超级用户成功: >>Superuser created successfully. + 再次运行你的服务,输入账号和密码就可以成功登陆了: python manage.py runserver + 登录进去里面没有显示需要进行设置: + 进入 setting.py 在 `INSTALLED_APPS = []`添加 `books`连接数据 + 修改为中文管理系统 进入 setting.py 修改语言为简体中文 `LANGUAGE_CODE = 'zh_Hans'` #### 创建数据表 + 先在 books/models.py 创建Article类并设置字段 ``` class Article(models.Model): # 设置文章标题数据类型为字符串最长为64个字节,默认为title title = models.CharField(max_length=64, default="Title") author = models.CharField(max_length=12, default="Author") # 修改数据默认显示的名称 def __str__(self): return self.title ``` + 创建数据表: + python manage.py makemigrations app名(可选) + python manage.py migrate ``` Migrations for 'books': books\migrations\0001_initial.py - Create model Article ``` + 将model.py添加到books/admin.py里面 ``` admin.site.register(Article) ``` + 每一次更新books/models.py里面数据都要同步数据库,需要执行: + python manage.py makemigrations + python manage.py migrate #### 创建页面 + 创建主页面: books/templates/index.html + 创建子页面: books/templates/book_page.html + 修改路由 + 在books目录下新建urls.py ``` from django.contrib import admin from django.urls import path from . import views urlpatterns = [ path('', views.index), path('', views.book_page, name='book_page'), ] ``` + 在project/urls.py 文件中进行设置 ``` from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('books/', include(('books.urls', 'books'), namespace='books')), ] ``` + 取出后台的数据 views.py 中import models ``` from django.shortcuts import render from . import models ``` + 在views.py文件中进行页面路由跳转的配置 ``` def index(request): articles = models.Article.objects.all() return render(request, 'index.html', {'articles': articles}) def book_page(request, article_id): article = models.Article.objects.get(pk=article_id) return render(request, 'book_page.html', {'article': article}) ``` #### 后台设置 + 显示一条信息的多个属性 ``` class BookAdmin(admin.ModelAdmin): list_display = ('title', 'author', 'date_add', 'bookImage') # 过滤器 list_filter = ('date_add', ) admin.site.register(Article, BookAdmin) ``` #### other + 引入icon图标 + `` + 子页面进行跳转 + `了解更多 >>` #### 待改善 + 后台添加图书图片储存到了本地根目录下,还不会使用 #### 感谢慕课网 + 相关视频教程: [django入门与实践](https://www.imooc.com/learn/790)