1.在Pycharm中安装MySQL和安装pymysql安装MySQL可以参考我的博客:MySQL5.7.21安装教程因为Python2的mysql库为:mysqldb,而Python3的为:pymysql,所以在Pycharm中安装pymysql。与之前安装django类似,见下图:2.数据库配置打开mysite/settings.py,找到DATABASES,修改红框内容:输入代码:DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'mysql','USER':'root','PASSWORD':'root','HOST':'127.0.0.1','PORT':'3306',}}如果NAME没有写成mysql,执行下面的操作会报错:因为是Python3,记得在同级的__init__.py文件中加入如下代码:importpymysqlpymysql.install_as_MySQLdb()然后在Terminal中输入以下命令:pythonmanage.pyMigrate此时遇到另一个报错:根据上图所示文件位置找到operations.py,修改decode为encode,大约146行.您可能还会遇到另一个错误。注释掉一个和operations.py同级的文件base.py的35和36两行:再次运行上面的命令,你会看到:3.在这个里面创建一个模型在一个简单的投票应用中,两个模型需要创建:问题和选择。Question模型包括问题的描述和发布时间。Choice模型有两个字段,选项描述和当前投票数。每个选项都属于一个问题。编辑polls/models.py文件:fromdjango.dbimportmodelsclassQuestion(models.Model):question_text=models.CharField(max_length=200)#questiondescriptionpub_date=models.DateTimeField('datepublished')#publishedtimeclassChoice(models.Model):question=models.ForeignKey(Question,on_delete=models.CASCADE)choice_text=models.CharField(max_length=200)#选项描述votes=models.IntegerField(default=0)#当前投票数4.Activation模型在文件mysite/settings.py中的INSTALLED_APPS子项中添加一个虚线路径:'polls.apps.PollsConfig',结果如红框所示:然后在Terminal中输入以下命令:pythonmanage.pymakemigrationspolls会看到类似下面的输出:Migratebelow:pythonmanage.pysqlmigratepolls0001你会看到:再次运行migrate命令,在数据库中创建新定义模型的数据表:pythonmanage.pymigrate更改模型需要这三个步骤:编辑models.pyf文件并更改模型。运行pythonmanage.pymakemigrations以生成模型更改的迁移。运行pythonmanage.pymigrate以应用数据库迁移。5.初始测试API在Terminal中输入以下命令进入交互式Python命令行:pythonmanage.py成功进入shell后,尝试数据库API,尝试前修改models.py模型代码:#Createyourmodelshere.importdatetimefromdjango.dbimportmodelsfromdjango.utilsimporttimezoneclass问题(models.Model):question_text=models.CharField(max_length=200)#questiondescriptionpub_date=models.DateTimeField('datepublished')#publishedtimedef__str__(self):returnself.question_textdefwas_published_recently(self):returnself.pub_date>=timezone.now()-datetime.timedelta(days=1)类选择(models.Model):question=models.ForeignKey(Question,on_delete=models.CASCADE)choice_text=models.CharField(max_length=200)#选项描述votes=models.IntegerField(default=0)#当前得票数def__str__(self):returnself.choice_text然后可以试试数据库API:frompolls.modelsimportChoice,QuestionQuestion.objects.all()fromdjango.utilsimporttimezoneq=Question(question_text="What'snew?",pub_date=timezone.now())q.save()q.idq.question_textq.pub_date当需要退出交互式Python命令行时,按Ctrl+Z6.创建管理员账户,输入以下命令:pythonmanage.pycreatesuperuser然后输入用户名、邮箱地址、密码,再次确认。7、启动开发服务Django的管理界面默认是开启的。让我们启动开发服务器,看看它长什么样。如果开发服务器没有启动,使用以下命令启动它:pythonmanage.pyrunserver打开浏览器,进入您本地域名的“/admin/”目录——例如“http://127.0.0.1:8000/管理员/“。应该看到管理员登录界面:输入刚才注册的用户名和密码进入管理:8.将投票应用添加到管理页面,发现在索引页中没有显示投票应用,所以我们需要告诉管理页面,问题Question对象需要管理。打开polls/admin.py文件,编辑如下:fromdjango.contribimportadminfrom.modelsimportQuestionadmin.site.register(Question)9.体验便捷的管理功能现在我们已经将Question类注册到管理页面了。Django知道它应该显示在索引页面上,所以只需刷新页面:单击“问题”。现在查看问题“问题”对象的列表“更改列表”。该界面会显示数据库中所有的Question对象,您可以选择一个进行修改。在这里,我们现在有了“怎么了?”我们在上一节中创建的问题。点击“怎么了?”编辑问题对象:通过单击“今天”和“现在”按钮更改“发布日期”。然后单击“保存并添加另一个”按钮。然后点击右上角的“历史记录”按钮。您将看到一个页面,列出通过Django管理页面对当前对象所做的所有更改,列出时间戳和进行修改的用户的用户名:10.致谢编写您的第一个Django应用程序,第2部分Pycharm数据库连接错误django.db.utils.OperationalError:(1049,"Unknowndatabase'djangodb'")
