IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django学习笔记三 -> 正文阅读

[Python知识库]Django学习笔记三

设计样式

安装并集成Bootstrap3

  • 安装bootstrap3
pip install django-bootstrap3
  • 在项目中配置bootstrap3,打开settings.py文件,在INSTALLED_APPS中添加如下代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    
    # My apps
    'learning_logs',
    'users',

    # Third party apps
    'bootstrap3',
]
  • 配置jQuery,在settings.py的末尾添加如下代码
BOOTSTRAP3 = {
    'include_jquery': True,
}

修改base.html

  • 加载bootstrap3并添加head标签
{% load bootstrap3 %}

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Learning Logs</title>

    {% bootstrap_css %}
    {% bootstrap_javascript %}
  </head>
  • 定义导航栏
  <body>
    <nav class="navbar navbar-default navbar-static-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed"
              data-toggle="collapse" data-target="#navbar"
              aria-expanded="false" aria-controls="navbar">
            </button>
            <a class="navbar-brand" href="{% url 'learning_logs:index' %}">Learning Log</a>
        </div>

        <div id="navbar" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li><a href="{% url 'learning_logs:topics' %}">Topics</a></li>
          </ul>
        </div>

        <ul class="nav navbar-nav navbar-right">
          {% if user.is_authenticated %}
            <li><a>Hello, {{ user.username }}.</a></li>
            <li><a href="{% url 'users:logout' %}">log out</a></li>
          {% else %}
            <li><a href="{% url 'users:register' %}">register</a></li>
            <li><a href="{% url 'users:login' %}">log in</a></li>
          {% endif %}
        </ul>

      </div>
    </nav>
  • 定义页面的主要部分
    <div class="container">
      <div class="page-header">
        {% block header %} {% endblock header %}
      </div>
      <div>
        {% block content %} {% endblock content %}
      </div>
    </div>
  </body>
</html>

设计其他页面,以edit_entry为例,其他大同小异

{% extends "learning_logs/base.html" %}
{% load bootstrap3 %}

{% block header %}
  <h2>Edit entry.</h2>
{% endblock header %}

{% block content %}
  <p>
    <a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a>
  </p>

  <form action="{% url 'learning_logs:edit_entry' entry.id %}" method="post" class="form">
    {% csrf_token %}
    {% bootstrap_form form %}

    {% buttons %}
      <button name="submit" class="btn btn-primary">save changes</button>
    {% endbuttons %}

  </form>
{% endblock %}

部署项目

注册并安装所需工具

pip install dj-database-url
pip install dj-static
pip install static3
pip install gunicorn
pip install psycopg2

pip freeze > requirements.txt
  • 指定Python运行时环境:在manage.py所在目录新建runtime.txt,添加python版本号
python-3.10.0

修改相关配置

  • 修改settings.py,在末尾添加如下内容
# Heroku settings
# 这里需要做一定修改,不能用 os.getcwd() == '/app',否则会报错:
# django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.
if 'HOME' in os.environ and os.environ['HOME'] == '/app':
    import dj_database_url
    DATABASES = {
        'default': dj_database_url.config(default='postgres://localhost')
    }

    # Honor the 'X-Forwarded-Proto' header for request.is_secure().
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

    # Allow only Heroku to host the project
    ALLOWED_HOSTS = ['plutors.herokuapp.com']

    # close debug messages
    DEBUG = False

    # Static asset configuration
    PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
    STATIC_ROOT = 'staticfiles'
    STATICFILES_DIRS = (
        os.path.join(PROJECT_DIR, 'static'),
    )
  • 在manage.py所在目录新建Procfile,输入如下内容。不能使用原书的内容,否则无法启动应用
web: gunicorn learning.wsgi --log-file - --log-level debug
python manage.py collectstatic --noinput
manage.py migrate
  • 修改项目目录下的wsgi.py
import os

from django.core.wsgi import get_wsgi_application
from dj_static import Cling

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'learning.settings')

application = Cling(get_wsgi_application())
  • 在项目目录下,新建static文件夹,并添加placeholder.txt,添加如下内容
This file ensures that learning/static/ will be added to the project. 
Django will collect static files and place them in learning/static/.

使用Git

  • 安装Git
  • 配置Git
git config --global user.name "xxx"
git config --global user.email "xxx@xxx.com"
  • 新增 .gitignore
ll_env/
__pycache__/
*.sqlite3
  • 提交项目
# 把项目所在目录初始化为Git仓库
git init
# 添加除.gitignore中以外的所有做过更改的文件
git add .
# 把暂存区里的改动(git add 的内容)提交到本地的版本库
git commit -am "Ready for deployment to heroku."
# 查看是否还有改动
git status

把项目推送到Heroku

# 使用之前注册的账号进行登录,-i 表示在命令行中登录,否则会报ip不一致的错误
heroku login -i
# 在Heroku中创建应用
heroku create
# 把项目推送到Heroku,我本地的分支是main,你可以根据自己的分支修改
git push heroku main
# 检查服务器进程是否正确启动
heroku ps
# 从浏览器中打开网站
heroku open

设置数据库

# 这里要用python3而不是python,否则会报错
heroku run python3 manage.py migrate

优化Heroku部署

  • 创建超级管理员
heroku run bash
python manage.py createsuperuser
exit
  • 创建一个用户友好的URL
# 任意没被使用过且长度大于3的名称都可以
heroku apps:rename xxx
  • 确保实时项目的安全性,打开settings.py,修改如下内容并提交:
    # 注意,只修改Heroku部分的配置,这样本地测试仍然可以看到debug信息
    # Allow only Heroku to host the project
    ALLOWED_HOSTS = ['plutors.herokuapp.com']

    # close debug messages,
    DEBUG = False
  • 关闭Heroku应用,把dynos设为0即可,重新启动只需设为1
# 关闭应用
heroku ps:scale web=0
# 重启应用
heroku ps:scale web=1
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:02:46  更:2022-02-16 13:04:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:52:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码