编写你的第一个Django应用程序,第二部分
2018-06-18 03:18:48来源:未知 阅读 ()
---恢复内容开始---
从上个随笔停止的地方开始,我们将设置数据库,创建第一个模型。并快速介绍django自动生成的管理站点。
数据库设置:
打开文件mysite/settings.py
默认情况下,配置使用SQLite。这是新手最简单的选择。
虽然你不暂时不用其他数据库,但是还是要说明一下的:
ENGINE
-
'django.db.backends.sqlite3'
-
'django.db.backends.mysql'
-
'django.db.backends.oracle'等
NAME
- 数据库名称,如果sqlLite,name表示该文件的完整路径。包括文件名。默认将文件存储到你的项目目录中。
- 如果使用其他数据库,需要额外的设置user password host。
在文件底部还有个TIME-ZONE设置。这个代表时区。一般改为:TIME_ZONE = 'Asia/Shanghai'
在文件顶部有个INSTALLED_APP设置。它包含django实例中激活的所以应用程序的名称,应用程序可以用于多个项目。
- django.contrib.admin--管理网站
- django.contrib.auth--一个认证系统
- django.contrib.contenttyoes--内容写的框架
- django.contrib.sessions--会话框架
- django.contrib.messages--消息传递框架
- django.contrib.staticfile--一个管理静态文件的框架
但是其中一些应用程序至少使用了一个数据库表,所以我们需要在数据库中创建表格,然后才能使用它们。为此,请运行以下命令:
python manage.py migrate
创建模型
创建两个模型:
question:问题,日期
choice:选择文本,票数每个choice关联一个question。
polls/models.py文件编写代码:
1 from django.db import models 2 3 # Create your models here. 4 class Question(models.Model): 5 question_text=models.CharField(max_length=200) #问题 6 pub_date=models.DateTimeField('date published') #日期 7 8 class Choice(models.Model): 9 choice_text=models.CharField(max_length=200) #选择 10 votes=models.IntegerField(default=0) #票数 11 question=models.ForeignKey(Question,on_delete=models.CASCADE) #常见的数据库关系,多对一,多对多,一对一
激活模型
刚刚models.py可以为此应用程序创建数据库,create table.。
但我们还要告诉项目,该polls程序已安装。
回到settings.py文件的INSTALLED-APPS修改代码:
'polls.apps.PollsConfig',
现在django知道polls程序,运行另一个命令:
python manage.py makemigrations polls
生成了迁移文件。有一个命令可以执行迁移,migrate。
但先看看迁移的sql将运行啥。sqlmigrate采用迁移名称并返回它们的sql:
python manage.py sqlmigrate polls 0001
当然,输出决定于你选择的数据库,大同小异。
说明:sqlmigrate实际不会执行迁移,只是将其打印到屏幕。
现在,migrate再次运行来执行迁移:
python manage.py migrate
迁移非常强大,后面你可以随时更改模型,而无需删除数据库或表,并创建新的数据库,它专门用于实时升级数据库,而不会丢失数据。
总结:
- 改变模型--models.py
- 生成迁移文件--python manage.py makemigrations 程序名
- 执行迁移--pytho manage.py migrate
- 同步数据库--python manage.py syncdb
- 清空数据库(保留表结构)--python manage.py flush
使用
现在,我们来跳入python shell交互式,并使用django提供的免费API。
python manage.py shell
#导入两个模型类 In [1]: from polls.models import Question,Choice #查询。返回的是对象。为空,因为没有任何数据 In [2]: Question.objects.all() Out[2]: <QuerySet []> #导入django工具包,时区相关 In [5]: from django.utils import timezone #创建一个Question对象。参数就是字段内容 In [7]: q=Question(question_text="What's new",pub_date=timezone.now()) #保存 In [8]: q.save() #id In [9]: q.id Out[9]: 1 #查询字段 In [10]: q.question_text Out[10]: "What's new" In [11]: q.pub_date Out[11]: datetime.datetime(2018, 6, 4, 7, 39, 40, 677255, tzinfo=<UTC>) #修改字段 In [12]: q.question_text="What's up?" In [13]: q.save() #In [15]: Question.objects.all() Out[15]: <QuerySet [<Question: Question object>]>
你有没有发现。这是一个无益的对象。解决问题。在models.py文件中修改
class Question(models.Model): #... def __str__(self): return self.question_text class Choice(models.Model): #... def __str__(self): return self.choice_text
说明:向模型中添加__str__方法非常重要。
重新进入shell命令:
n [5]: Question.objects.filter(id=1) Out[5]: <QuerySet [<Question: What's up?>]> In [6]: current_year=timezone.now().year In [7]: Question.objects.get(pub_date__year=current_year) Out[7]: <Question: What's up?> In [8]: Question.objects.get(pk=1) Out[8]: <Question: What's up?> In [9]: q=Question.objects.get(pk=1) In [10]: q.choice_set.create(choice_text='Not much',votes=0) Out[10]: <Choice: Not much> In [12]: q.choice_set.create(choice_text='The sky',votes=0) Out[12]: <Choice: The sky> In [13]: q.choice_set.create(choice_text='Just hacking again',votes=0) Out[13]: <Choice: Just hacking again> In [14]: c=q.choice_set.create(choice_text='xjm',votes=1) In [15]: c.question Out[15]: <Question: What's up?> In [16]: q.choice_set.count() Out[16]: 4 In [17]: q.choice_set.all() Out[17]: <QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>, <Choice: xjm>]> In [18]: c Out[18]: <Choice: xjm> In [19]: q Out[19]: <Question: What's up?>
创建一个管理员
D:\学习历程\django学习\mysite>python manage.py createsuperuser Username (leave blank to use 'xjm'): admin Email address: 1510261589@qq.com Password: Password (again): Superuser created successfully. D:\学习历程\django学习\mysite>
执行命令后,会提示输入用户名、邮箱、密码、密码确认。
启动开发服务器
python manage.py runserver
打开web浏览器输入:https://127.0.0.1:8000/admin/。
输入用户名、密码登录。
如果忘了密码,可以修改:
D:\学习历程\django学习\mysite>python manage.py changepassword admin #后面跟用户名 Changing password for user 'admin' Password: Password (again): Password changed successfully for user 'admin'
但是,你有没有发现。我们的民意调查在哪里,并没有出现。只需做一件事。告诉管理员。
打开polls/admin.py文件编写代码:
1 from django.contrib import admin 2 from .models import Question 3 4 # Register your models here. 5 admin.site.register(Question) #注册question对象
此刻,你看到你想要看到的了:
其余不多展示了,自己欣赏:
---恢复内容结束---
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 列表和元组 2019-08-13
- 原创:Python编写通讯录,支持模糊查询,利用数据库存储 2019-07-24
- 第一个python小脚本 2019-07-24
- Python-02-基础知识 2019-07-24
- 编写装饰器,为多个函数加上认证的功能(用户的账号密码来源 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash