安裝Django時解決的問題-mysql及訪問(附pycharm激活)


1.做些軟鏈接和virtualenv的基本使用:

ln -s /data/linkdood/im/vrv/python36/bin/python3.6 /usr/bin/python3
ln -s /data/linkdood/im/vrv/python36/bin/pip3.6 /usr/bin/pip
ln -s /data/linkdood/im/vrv/python36/bin/virtualenv /usr/bin/virtualenv
virtualenv /data/my_env1 -p /usr/bin/python3  創建
source /data/my_env1/bin/activate  激活
deactivate 熄火
rmvirtualenv project_env 刪除
pip freeze
pip install Django
import django
django.VERSION

django-admin startproject monitor1 創建一個項目

python manage.py startapp show 創建一個app

2.初始化數據庫

python manage.py migrate

一、報錯:django.db.utils.NotSupportedError: URIs not supported

版本問題,sqlite3.7.5竟然沒有URLs文件,sqlite3 -version

我的版本是3.6.20,更低,直接舍棄,轉用MySQL(Linux環境)

DATABASES = {
	'default': {
		'ENGINE': 'django.db.backends.mysql',
		'NAME': 'information',
		'USER': '用戶',
		'PASSWORD': '加過密的密碼',
		'HOST': '127.0.0.1',
		'PORT': '11306',
	}
}

二、再執行,報錯:

django.core.exceptions.ImproperlyConfigured:

Error loading MySQLdb module.Did you install mysqlclient?

你認為這是讓你去安裝mysqlclient么?

這是讓你去裝python連接mysql數據庫的驅動程序,首先,需要安裝mysql的開發包

rpm -qa | grep mysql-devel
yum install mysql-devel
#python2.7:
sudo pip install MySQLdb
#python3.4:
sudo pip install PyMySQL
安裝完成之后還是報這個錯,
在Django中,連接數據庫時使用的是 MySQLdb 庫,這在與 python3 的合作中就會報剛才的錯
解決辦法:在 __init__.py 文件中添加以下代碼即可
import pymysql
pymysql.install_as_MySQLdb()

三、報這個錯:ModuleNotFoundError: No module named 'pymysql'

是因為我的真實環境安裝了PyMySQL,虛擬目錄沒有安裝。

四、報這個錯;"Access denied for user 'django'@'localhost' (using password: YES)"

是因為授權有問題,應該這樣授權(不是127.0.0.1):

grant all on information.* to django@localhost identified by 'qwerQWER1234!@#$';

五、執行,報錯:django.db.utils.InternalError: (1366, "Incorrect string value:

'\\xE4\\xBC\\x81\\xE4\\xB8\\x9A...' for column 'name' at row 1"),

是因為字符集的原因,數據庫默認是latin1,

查看數據庫字符集:show variables like 'character%';

查看某個庫的表的字符集:show table status from information;

首先修改字符集-vi /etc/my.cnf 添加 character_set_server=utf8,重啟數據庫,發現不行;

這是因為之前創建的這個information字符集是latin1,需要刪除它重新建一個,重復之前的步驟即可解決.

六、執行,報錯: django.db.utils.InternalError: (1049, "Unknown database 'information'")

這是因為數據庫中沒有這個表

create database information;
show grants;
查看當前用戶擁有的權限,按理說這個django項目應該只擁有這一個表的權限:
grant all on information.* to django@localhost identified by 'django';

七、數據庫常用操作:

alter user 'root'@'localhost' identified by 'Root123!@#'; 重置centos7-mysql5.7.24重置密碼
CREATE USER 'django' IDENTIFIED BY 'qwerQWER1234!@#$';  創建用戶,其實不用創建,授權的時候直接就創建了
delete from user where user='django';  刪除用戶

drop database information;

create database information; 下面這句僅當參考

CREATE DATABASE IF NOT EXISTS db default character set utf8 COLLATE utf8_general_ci;

delete from show_company where id=1;

update show_company set domaim_name='t2.linkdood.cn',ipaddress='1.1.1.2' where id=2;

insert into show_company (domaim_name,ipaddress,use_type,register_date) values ('*','*','*','*');

手動插入數據每個字段都要寫,你django里有默認的都不行

在models中設置了install_date不能為空,用install.objects.create不加這個字段還是能創建,

install.objects.filter(id=1).delete()

install.objects.filter(id=1).update(result_type='failure')

聯合唯一測試成功-unique_together = ('user', 'install_date')

 3.解決無法訪問的問題:

nohup python manage.py runserver 172.16.8.128:10000 &
啟動后由於防火牆阻擋,添加策略:
iptables -I INPUT 3 -p tcp -m multiport --dports 10000,10001,10002 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I OUTPUT 3 -p tcp -m multiport --dports 10000,10001,10002 -m state --state NEW,ESTABLISHED -j ACCEPT
用-A添加到末尾還不行,因為第六條策略將匹配不到的全部拒絕,所以得用-I插隊到第三條
訪問時,因為沒有用127.0.0.1,所以報錯:
Invalid HTTP_HOST header:You may need to add '202.201.38.70' to ALLOWED_HOSTS.
可以用下面的兩種方式任意一個:
ALLOWED_HOSTS = ['172.16.8.128', 'localhost', '127.0.0.1']
ALLOWED_HOSTS = ['172.16.8.128']

報錯:Error: That IP address can't be assigned to.

是因為:我用這樣的方式啟動-python manage.py runserver 192.168.165.4:8000

windows本機IP是192.168.165.4,但我的虛擬機用的是NAT模式,虛擬機IP是192.168.150.10,

django不識別windows本機IP,你用127.0.0.1啟動不會報錯,但是windows訪問不了,正確啟動方式:

python manage.py runserver 192.168.150.10:8000 用虛擬機IP啟動

 4.時間問題:

auto_now無論是你添加還是修改對象,時間為你添加或者修改的時間,

auto_now_add為添加時的時間,更新對象時不會有變動。

from show.models import company

a=company.objects.create(name="中國建設銀行003",identify="003")

數據庫里的時間差8個小時,需要注釋一行,修改一行,添加一行:

# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
將True改為False
USE_TZ = False

 將數據庫中的時間格式化為常見格式:用python的方式這么實現:

a.date.strftime( '%Y-%m-%d %H:%M:%S' )

模板內置date這么玩:{{ date | date:"Y-m-d H:i:s" }}

5.在Django中如何正確完整地刪除一個App(這個我沒試過)

1.刪除models.py
無論是刪除一個單獨的model還是刪除整個App,都需要首先刪除models.py文件中的模型。
./manage.py migrate your_app_name zero
刪除models.py中的數據模型。
2.刪除整個App文件夾
在settings.py的Installed Apps中移除該app。
在urls.py中移除該App相關內容。

 6.virtualenvwrapper的基本使用

1.把所有的虛擬環境都放在一個地方;2.包裝用於管理虛擬環境(創建,刪除,復制);3.使用一個命令來環境之間進行切換。

pip install virtualenvwrapper
export WORKON_HOME=~/Envs  #設置環境變量
mkdir -p $WORKON_HOME #創建虛擬環境管理目錄
find / -name virtualenvwrapper.sh #找到virtualenvwrapper.sh的路徑
source 路徑 #激活virtualenvwrapper.sh
可能會報錯:VIRTUALENVWRAPPER_PYTHON=/usr/bin/python...bulabula,python指向出錯
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
重新source  virtualenvwrapper
virtualenvwrapper.user_scripts creating /root/Envs/premkproject
...會創建一大堆命令
lsvirtualenv    #列舉所有的環境。
cdvirtualenv    #導航到當前激活的虛擬環境的目錄中,能夠瀏覽它的 site-packages。
cdsitepackages   # 直接進入到 site-packages 目錄中。

   每次要想使用virtualenvwrapper 工具時,都必須先激活virtualenvwrapper.sh,另外,如果創建前要將虛擬環境保存到Envs中,就要先設置一下環境變量:export WORKON_HOME=~/Envs,再搭建。貌似必須搭建到這個~/Envs目錄下,要不然管理不到。

7.Django幾個小點:

①模板中自定義style中class用點號'.',id用'#'

②values方法可以獲取number字段的字典列表;values_list可以獲取number的元組列表。

values_list方法加個參數flat=True可以獲取number的值列表。

③models中有用到choices的,想在模板中獲取到它對應的中文,用--obj.get_字段名稱_display。

8.pycharm激活碼地址--http://idea.lanyus.com/,日期只到19年5月4號,有時間可以破解個補丁...,

據說這兩個網站可以免費破解win10,

技術流:https://blog.csdn.net/u014044812/article/details/82729151

激活碼:https://blog.csdn.net/WangJiankun_ls/article/details/79475947?utm_source=blogxgwz1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM