1、Django运行服务报NameError: name ‘os‘ is not defined
重现步骤:新建Django项目,自动生成各种文件,添加视图函数(就是helloworld而已),配置url,
运行python manage.py runserver时,报错:
'DIRS': [os.path.join(BASE_DIR, 'templates') (其实仔细看这句话就知道少OS了)
NameError: name 'os' is not defined
仔细查看settings.py文件中:
这里调用了os模块,但是文件头并没引用os模块(不知道为什么pycharm这么坑)
解决办法:在settings.py文件头加上:
2、Pycharm连接Django sqlite3 数据库时没有As Data Source选项
在连接Django自带的sqllite数据库时,右键数据库点击As Data Source后,但是有很多人发现自己的pycharm没有As Data Source这一选项。
这就需要自己手动连接数据库。
一.找到自己的数据库
点开右面的Database,点击+号,选择Data Source,选择SQLite.
二.找到并连接
浏览目录,找到Django项目自建的数据库,在和manage.py同级目录里,默认名为db.sqlite3,点击ok。
测试连接,可能会下载文件,测试成功后点击应用即可连接数据库。
数据库连接成功。
在PYCHARM的终端下运行:python manage.py migrate
进行数据迁移,生成sqlite3数据库,然后再打开main就会看到生成的表:
以下是Django初始化内容记录,大家可不用往下看:
使用pycharm编写Python脚本的时候,先选中需要注释的行,然后同时按键盘右下角的----Ctrl和Ctrl键正上方的‘/’键---可以实现多行注释
设置项目:django-admin startproject XXX
设置APP:django-admin startapp AppXXX (或python startapp AppXXX)
设置settings.py:
添加APP到INSTALLED_APPS下
设置时区:
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False
设置所有人可访问
ALLOWED_HOSTS = ['*']
设置MYSQL数据库连接
伪装mysqldb:
pip install pymysql
import pymysql
pymysql.install_as_MySQLdb()
mysql -uroot -p
create database modeldb;
数据库连接MYSQL
时区加:Asia/Shanghai
python manage.py makemigrations App
执行命令python manage.py makemigrations报错
TypeError: __init__() missing 1 required positional argument: 'on_delete'
定义外键报错
解决办法
字段名称 = models.ForeignKey('表名', on_delete=models.CASCADE)
on_delete=models.CASCADE 在 django2.0之前有默认值,之后版本就需要显式指定
python manage.py migrate