Ubuntu里使用virtualenv改变当前python版本使得Django能正确显示中文网页

虚幻引擎5 AR开发教程02:构建和测试AR Android App 在本教程中,我们将学习如何在虚幻引擎 5 上构建和测试 AR 安卓应用。 阅读详情

背景介绍:

在项目开发初期,在Ubuntu使用的是python2.7来配合Django学习建站,后来在网站里添加中文内容的时候,网页因为python2.7的缘故无法解码中文字符而无法正确显示。

(ll_env) cheng@cheng-virtual-machine:~/Django_project/learning_logs$ pip list
Package       Version
------------- -------
Django        1.11.20
pip           19.0.3 
pkg-resources 0.0.0  
pytz          2018.9 
setuptools    40.8.0 
wheel         0.33.1

(ll_env) cheng@cheng-virtual-machine:~/Django_project$ python -V
Python 2.7
 

Django version 1.11.20
python version 2.7

解决方案

默认情况下,python2.7使用的不是utf-8字符串解码,而python3.x使用的是utf-8.
所以我这里的想法是,将当前的虚拟机的python版本升级到python3.x。

解决步骤

1.首先deactivate 当前的虚拟机环境
安装了virtualenv的话,在终端输入deactivate即可。

2.删除虚拟机的环境目录
rm -rf <虚拟环境目录文件名>

3.新建虚拟机环境,设定python版本为python3
virtualenv -p /usr/bin/python3 <目录名>
如下

cheng@cheng-virtual-machine:~/Django_project$ virtualenv -p /usr/bin/python3 ll_env
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/cheng/Django_project/ll_env/bin/python3
Also creating executable in /home/cheng/Django_project/ll_env/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.

4.激活虚拟环境

cheng@cheng-virtual-machine:~/Django_project$ source ll_env/bin/activate

5.查看当前虚拟环境python版本

(ll_env) cheng@cheng-virtual-machine:~/Django_project$ python -V
Python 3.6.7

6.查看虚拟环境安装包

(ll_env) cheng@cheng-virtual-machine:~/Django_project$ pip list
Package       Version
------------- -------
pip           19.0.3 
pkg-resources 0.0.0  
setuptools    40.8.0 
wheel         0.33.1 

发现没有安装Django, pip install Django 安装Django

(ll_env) cheng@cheng-virtual-machine:~/Django_project$ pip install Django
Collecting Django
  Downloading https://files.pythonhosted.org/packages/c7/87/fbd666c4f87591ae25b7bb374298e8629816e87193c4099d3608ef11fab9/Django-2.1.7-py3-none-any.whl (7.3MB)
    100% |████████████████████████████████| 7.3MB 4.7MB/s 
Collecting pytz (from Django)
  Using cached https://files.pythonhosted.org/packages/61/28/1d3920e4d1d50b19bc5d24398a7cd85cc7b9a75a490570d5a30c57622d34/pytz-2018.9-py2.py3-none-any.whl
Installing collected packages: pytz, Django
Successfully installed Django-2.1.7 pytz-2018.9

7.更新一下数据库
python manage.py migrate
出现如下告错TypeError: __init__() missing 1 required positional argument: 'on_delete'

(ll_env) cheng@cheng-virtual-machine:~/Django_project$ python manage.py migrate
Traceback (most recent call last):
 .........
  File "/home/cheng/Django_project/learning_logs/models.py", line 15, in <module>
    class Entry(models.Model):
  File "/home/cheng/Django_project/learning_logs/models.py", line 17, in Entry
    topic = models.ForeignKey(Topic)
TypeError: __init__() missing 1 required positional argument: 'on_delete'

8.原因当前的Django版本已有之前的1.x升级到2.x, 需要修改外键的参数,如下

from __future__ import unicode_literals

from django.db import models

# Create your models here.
class Topic(models.Model):
    """用户学习的主题"""
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        """返回模型的字符串表示"""
        return self.text
class Entry(models.Model):
    """学到的有关某个主题的具体知识"""
    topic = models.ForeignKey(Topic,on_delete=models.CASCADE) ##在Django1.x版本会默认参数on_delete=models.CASCADE, 而在Django2.x需要指定
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name_plural = 'entries'

    def __str__(self):
        """返回模型的字符串表示"""
        return self.text[:50] + "..."

9.修改后再次迁移数据库,成功。
参考:https://www.cnblogs.com/phyger/p/8035253.html

(ll_env) cheng@cheng-virtual-machine:~/Django_project$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, learning_logs, sessions
Running migrations:
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying auth.0009_alter_user_last_name_max_length... OK

10.尝试打开网页,成功!

【Claude Code】Unable to connect to API 报错原因与排查解决全流程 深入分析 Claude Code 中 Unable to connect to API 系列报错的根因,涵盖 ECONNREFUSED、ECONNRESET、ETIMEDOUT 等 6 种变体,提供从网络连通性检测、代理配置到 LLM 网关路由的完整排查路径,帮助开发者快速恢复 Claude Code 的正常使用。 阅读详情

相关推荐

一文告诉你:如何在trae中编译运行GD32程序,并让AI帮你修改代码

本文详细介绍了如何将GD32程序如何用官方固件库构建出来,然后从Keil迁移到国产免费工具Trae,并利用AI进行代码修改的全过程。

水滴爬呀爬 2661

linux下创建virtualenv时指定python版本

linux下创建virtualenv时指定python版本virtualenv是python开发中一个重要的工具,它可以帮助我们创建一个干净的python解释环境,创建虚拟环境时,这个虚拟环境的python版本往往是系统默认的2.x版本.别急,我们只需要一条简单的命令就可以创建一个python3.x的虚拟环境virtualenv -p /usr/bin/python3 py3env其中,py3en...

Heyll__的博客 1523

Gem5模拟器,详解官网教程Event-driven programming(五)

Gem5模拟器,详解官网教程Event-driven programming、时间调度、如何自定义SimObject

qq_46675545的博客 2038

ubuntu 20.04 系统下Python虚拟环境的安装和使用教程

这篇文章主要介绍了ubuntu系统下Python虚拟环境的安装和使用教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 前言:进行python项目开发的时候,由于不同的项目需要使用不同的资源包和相关的配置,因此创建多个python虚拟环境,在虚拟环境下开发就显得很有必要。 安装虚拟环境 •步骤: •打开Linux终端(快捷键Ctrl+Alt+T),输入命令: 1 2 sudo apt install python-...

0x8g1T9E- 1万+

全球第一开源云ERP Odoo操作手册 模块安装和界面汉化指南

Odoo 的功能包含在不同的模块中, 刚创建的数据库除 Odoo 的核心模块外, 其它模块并没有被安装到系统中,你可以根据需要安装它们。本节将介绍安装模块和界面汉化的相关知识。

weixin_44793763的博客 2073

Allan方差读图分析IMU误差指标

Allan方差标定IMU参数实测分析

weixin_44927558的博客 3566

Django+uwsgi+nginx+ubuntu部署出现中文乱码

需要设置uwsgi.ini配置文件的编码,重启就行 如果使用screen需要重启一个窗口,并且进入项目的虚拟环境,就行了

Mantoo123的博客 603

损失函数大汇总(五十九)(TopoInteraction Loss附公式推导与代码)

本文介绍了TopoInteraction Loss,一种用于多类别分割任务的拓扑交互约束损失函数。不同于传统拓扑损失关注单类别的连通性和孔洞数量,该损失重点约束不同类别之间的空间关系,包括互斥(exclusion)和包含(containment)两种典型拓扑关系。通过将全局拓扑约束转化为局部邻接检测,该损失能准确定位破坏预设拓扑关系的像素,并针对性施加惩罚。关键创新点在于:1)将包含关系转化为互斥约束;2)使用卷积运算高效检测非法邻接;3)仅对违规像素施加损失。实验表明,该方法能有效纠正类别间的错误接触,特

悦学共鸣,温柔以待,汇聚光芒,共同成长 350

django环境搭建

最近需要搭建一下适合python Django开发的环境 Window 10 平台 pip 升级 python –m pip install –upgrade pip Virtualenv 安装 pip install virtualenv virtualenvwrapper 安装 pip install virtualenvwrapper-win 设置 WORK_HOME 环境变量 默认路径:C:\Users\admin\Envs WORKON_HOME = D:\test\vritualenv win1

asd_112008的博客 542

Doris数据过期策略:自动清理历史数据

在数据的世界里,就像我们的房间会堆满各种东西一样,数据库也会积累大量的数据。随着时间的推移,很多历史数据可能不再经常被使用,但它们却占据着宝贵的存储空间。Doris是一款强大的数据库,为了让它能更高效地运行,合理地管理数据,我们就需要一种方法来自动清理那些不再需要的历史数据。本文的目的就是详细介绍Doris的数据过期策略,让大家知道如何利用这个策略来实现自动清理历史数据。范围涵盖了从基本概念到实际操作的各个方面。本文会先介绍一些和Doris数据过期策略相关的术语,让大家对一些专业词汇有个基本的了解。

软件工程实践的博客 555

Orange3实战教程:文本挖掘---标注语料库地图

Oreange3,文本挖掘,标注语料库地图用于在二维投影中可视化、聚类文档,并用关键词进行标注。

err2008的专栏 817

ubuntu部署django详细教程

教程使用的软件版本:Ubuntu 18.04.1 LTS,django2.0,Python 3.6.5、nginx-1.13.7、uWSGI (2.0.17.1),Ubuntu是纯净的,全新的。下面我们开始来部署。 文章转自django中文网:Ubuntu部署Django项目方法详解 如果觉得看文字没意思,想看视频教程的,请点击这里:Django项目部署视频教程 一、更新操作系统和安装依...

weixin_30409849的博客 441

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

django 中文显示

Django 设置   django 中文显示   2012-04-14 19:03:33|  分类: 默认分类 |  标签: |举报 |字号大中小 订阅 1 在settings.py中将LANGUAGE_CODE = 'zh-CN'后,django中的内置变量等将显示中文,如时间:四月 14, 2012, 7:01 p.m, 用四

东方匠心的专栏 6008

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

django 模板的html文件有中文,显示有问题。

解决方法:把Html另存为 Utf-8 格式

春暖鱼跳 1311

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ubuntu17.04更改下载源和python配置virtualenv环境

创建虚拟环境运行ipython >>>pip install virtualenv >>>virtualenv venv >>>source venv/bin/activate123 这时便已经进入了虚拟环境,现在便可使用pip install ipython 安装。 当你想退出这个虚拟环境时,使用命令 >>>deactivate

qiqzhang的博客 1026

如何创建一个简单网页

我们已经基本熟悉了HTML的格式,现在我们来尝试一下创建一个简单的网页。1.创建一个.html格式的文件选择一个文本编辑软件,我这里用的是Notepad++.在工具栏选择“language”,勾选html,这个时候软件就知道你在编辑html格式的文件了,你在输入元素的时候按“Tab”键它就会自动帮你补全,输入块元素,内敛元素的时候就会帮你在元素的开始和结束符自动匹配并标记。2.编辑html内容下面我

Cengineering的博客 1万+

Github pages+HEXO+域名绑定搭建个人博客

1.搭建环境 windows 7(64 位) $ git-2.15.1-64-bit $ node-v8.9.3-x64   如果上述软件已安装,请跳过。没有的,下载安装1.git 下载安装:(https://git-for-windows.github.io/)  安装好后查看版本:git version2.Node.js下载安装(https://nodejs.org/en/download/)

Cengineering的博客 2394

Freecodecamp学习实录(每日更新,欢迎交流)

Say Hello to HTML Element Incomplete 1 h1>Helloh1> 1就是一个HTML元素,h1是header1的简写,意思是一级标题。 大部分元素都有一个开始标记和一个结束标记。 开始标记像这样: 结束标记像这样: Headline with the h2 Element Incomplete h是英文header标题的缩写,标题无

Cengineering的博客 1979

什么是HTML

什么是HTML  HTML是超文本标记语言(hypertext markup language), 我现在用的编辑器叫优快云-markdown, 它是不是跟提到的什么markup啥的有点相似呢?确实如此,不仅可以直接在上面用<h1> </h1>来表示一级标题,其它的html语言也都支持, 比如 文件头<head> </head>,标题<title> </title>,段落标记<p> </p>, 斜

Cengineering的博客 445

PyCharm 配置 Python 虚拟环境:virtualenv/venv 与 Conda 实操对比

venv胜在轻量,创建速度快,只管理Python包,普通的后端、脚本、工具类项目用它完全够用,也没有额外的安装依赖。点添加解释器,选添加本地解释器,再选New environment,指定一下环境存放的目录,以及基础的Python版本,确认就创建完成了。我自己一直用lcjmSSL,免费申请,支持多域名、泛域名和IP证书,能自动申请、验证和部署,接口也简洁,基于Let's Encrypt、Google Trust Services这些支持ACME的可信机构,不用折腾复杂配置,挺顺手的。

osfipin note 400

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 392

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 229

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 205
上一篇: SQL学习(全文本搜索)
下一篇: Python Tkinter里取回button 回调函数的变量
Cengineering
博客等级 码龄13年 51粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值