计算机专业实用技能导引 (8).pdf
《计算机专业实用技能导引 (8).pdf》由会员分享,可在线阅读,更多相关《计算机专业实用技能导引 (8).pdf(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Django 快速 0.Django 安装 先你应当已经装好了 Python,最好还装了 Conda(如果没有,请参考暑培的 Python 教程),现在我们需要做的只是安装 Django 包而已。尽管你可以这样简单的代码完成 pip install django,但我并不推荐这样做,贸然将个重库装到本地不是明智的选择,尤其是可能在不同的需求下你需要安装不同的版本,譬如科协所维护的 Saiblo 站因为历史原因使的是 2.2 版本,前还没有勇把他迁移到 3.0 上,但是本课程举例的则是 3.0 版本。如果你配好了 Django,个可的操作是这步操作将会创建个全新的环境(与原来的环境隔离,不只是P
2、ython,还包括其他通过 conda 安装的程序),同时安装了 Python 3.8 与 Django 3.0,这我没有指定第三位版本号(如 3.0.8),在本课程涉及内容内它并不重要,另外 Django 3.0 需要的最低 Python 版本是 3.6。你也可以选择创建环境后再装 Django,省略此处的 django=3.0,但是注意 python=3.8 不可省略,否则你的 Python 将是 Python 2.7。安装好环境后即可激活环境这时候你可以试试看你的 python 与 pip 是哪个,Windows 执或许会你会看到多输出,但第所呈现的结果应当包含字符串 envs/djan
3、go-test/bin/,这即是新的环境的位置。Mac 与 Windows 执理应只会看到包含字符串 envs/django-test/bin/的输出。当然你愿意的话也可以完全借助 PyCharm 的虚拟环境管理与包管理器,想使该操作的同学寻找资料学习。最后,不要忘了确定你当前环境确实装好了 Django:如果输出了 Django 的版本号则表明安装完成,如果输出 No module named django 则哪出了问题。#-n 后是环境名,你可以起喜欢的名字,但是后的些指令中也需要做相应的更改conda create-y-n django-test python=3.8 django=3.
4、012conda activate django-test1where pythonwhere pip12which pythonwhich pip12python-m django-version11.概述 1.1 Django 是什么 Django 最初被设计于具有快速开发需求的新闻类站点,的是要实现简单快捷的站开发。Django 档概要简单地说,Django 是个于站开发的 Python 开源库,进步的,它是前后端耦合的架构,基于模板的视图模式完成响应内容。此处附上 Django 官站的址以尊敬,虽然有可能你永远不会有访问它的需求:https:/ Django 的特 Django 使 O
5、RM(Object-relational mapping)管理数据库,这使得你可以像操作般的类的对象样操作数据库记录,因此即使你对数据库没有任何概念,也可以使 Django 并操控数据库(但效率就难以保证了)。摘 Saiblo 的个设计如下:The codes below are copied from Saiblo project.All rights reserved.from enum import Enumfrom django.db import modelsclass Entity(models.Model):Model for Entity,which means users A
6、I with a single tag class Language(Enum):Enum for languages cmake=C+with CMake make=C+with Makefile cpp=C+c=C python=Python single script python_zip=Python zip file remote=Remote AI name=models.CharField(max_length=16)user=models.ForeignKey(User,related_name=entities,on_delete=models.CASCADE)game=mo
7、dels.ForeignKey(Game,related_name=+,on_delete=models.CASCADE)next_version=models.IntegerField(default=1)created_time=models.DateTimeField(auto_now_add=True)language=models.CharField(max_length=16,choices=(tag.name,tag.value)for tag in Language)is_deleted=models.BooleanField(default=False)class Meta:
8、ordering=-pk1234567891011121314151617181920212223242526272829303132Django 本带有个具有扩展性的管理站点,所有 Model 旦写好,只需要键添加到管理站点,即可管理相应的数据。Django 使 URL 调度器(可以看做个向 URL 的路由器)管理 URL 与接口,由度(不像 PHP,套路化的地址引来海量的扫描)Django 使视图(view)函数配合模板作为接口,接受请求并返回响应结果,这形成了个前后端体的架构:This codes below are copied from Django Documentfrom dja
9、ngo.urls import pathfrom.import viewsurlpatterns=path(articles/,views.year_archive),path(articles/,views.month_archive),path(articles/,views.article_detail),123456789101112这个例使了 Django 模板系统,它有着很多强的功能,而且使起来够简单,即使不是程序员也可轻松使。Django 档概要2.(本章将复现 Django 档的快速章节内容)2.1 创建项 2.1.1 命令 在终端切换到你存放项的录(这与 git clone
10、类似,你不必为创建件夹),执如下指令创建名为 mysite 的项(名字需要避免与些内置库重名,这会形成冲突,如命名为 django、test 都是有问题的)你将得到如下件树:2.1.2 PyCharm 或者你也可以 PyCharm Professional 的 Django 模板创建项The codes below are copied from Django Document.from django.shortcuts import renderfrom.models import Articledef year_archive(request,year):a_list=Article.ob
11、jects.filter(pub_date_year=year)context=year:year,article_list:a_list return render(request,news/year_archive.html,context)1234567891011django-admin startproject mysite1mysite/manage.py mysite/_init_.py settings.py urls.py asgi.py wsgi.py12345678(注意:你也可以跳过前的命令动创建环境,直接在 Pycharm New environment 创建,这样则
12、是利了 IDE 的功能。若动创建则需要再将它添加到 Pycharm,此处演)你将得到如下件树两者相差别仅在于 Pycharm 动创建了个不到的 templates 件夹。2.2 启动服务器 由于 Django 创建项后默认准备了预设,因此你可以代码不写而看到 Django 为你准备的东西,在项根录下执或者点击 Pycharm 右上的绿三论哪种,你将看到如下输出mysite manage.py mysite asgi.py _init_.py settings.py urls.py wsgi.py templates12345678910python manage.py runserver1注意
13、第 11,这意味着你现在已经有个站运在本地的 8000 端口(假设该端口未被占,否则你需要更改端口,现场演更改法)。这是 Django 带的个开发服务器,它的个显著特征是当你修改件后服务器会刻热更新。产环境(即站上线)不应该使它,但少小学期你它是没问题的。直接点击提的 URL 即可进 Django 预设,另外通过 http:/127.0.0.1:8000/admin 可以进管理站点,不过此时还没有设置管理员,因此法看到,我们不妨先添加个。希望你已经注意到了,此时你的根录下多了个件 db.sqlite3,这是 Django 默认使的 sqlite3 数据库,不过此时它的小是 0,因为你还没有往添
14、加任何东西,执如下指令(server 是否在运没有影响)你会看到有定度的输出,多以 Applying 打头,这表明 Django 预设的系列数据表被放到了你的数据库中,不出意外的话你的 db.sqlite3 将有 128KB。下你可以往数据库添加个超级(管理员)了然后有如下交互:这名如果留空则缺省会你当前系统的名,我迎合般习惯将它设置为 admin,邮箱地址可以留空,密码设置,注意同 Linux 的密码样,为了安全性不会有显。下我们可以进管理站点,刚才的密码进访问 Watching for file changes with StatReloaderPerforming system chec
15、ks.System check identified no issues(0 silenced).You have 17 unapplied migration(s).Your project may not work properly until you apply the migrations for app(s):admin,auth,contenttypes,sessions.Run python manage.py migrate to apply them.July 31,2020-05:21:50Django version 3.0.3,using settings mysite
16、.settingsStarting development server at http:/127.0.0.1:8000/Quit the server with CONTROL-C.123456789101112python manage.py migrate1python manage.py createsuperuser1Username(leave blank to use holder):adminEmail address:Password:Password(again):Superuser created successfully.12345之后你会进管理站点,此时我们还没有设置
17、任何数据库相关的东西,只有 Django 带的于鉴权的 Group 和 User,你可以对他们进增删查改,不过这不再赘述,我们进正题。2.3 创建应 下我们照着官教程来做个投票站,先需要新建个应成如下件树:这个件夹 polls 便是个应。2.4 创建视图 下修改 polls/views.py 来完成我们的 Hello wolrd python manage.py startapp polls1mysite db.sqlite3 manage.py mysite/polls admin.py apps.py _init_.py migrations _init_.py models.py tes
18、ts.py views.py templates123456789101112131415我们有了视图函数,但是还没有配置 URL,下创建件 polls/urls.py这你规定了不加任何路径则会直接到 index 函数,但这是在 polls 应内部的,你还需要将它添加到项总设置,对 mysite/urls.py 进修改下你就可以通过访问 http:/localhost:8000/polls/来看我们的 Hello World了当然,你乐意的话也可以在返回加点 HTML 甚是 CSS。2.5 初识数据库 不失般性,这我们直接使带的轻量级数据库 sqlite3,不配置另外的数据库(小学期 sqli
19、te3 已经够了)数据库中需要到时区,我们先设置下的时区,你可能已经发现了 Django 给的 log 的时间北京时间早了个小时,在 mysite/settings.py 中修改内容在做作业的时候你可以直接设置 USE_TZ=False,不得不说使时区确实会带来额外的编程压。下我们来定义下模型,将 polls/models.py 修改为如下内容from django.http import HttpResponsedef index(request):return HttpResponse(Hello world!)12345from django.urls import pathfrom.i
20、mport viewsurlpatterns=path(,views.index,name=index),1234567from django.contrib import adminfrom django.urls import include,pathurlpatterns=path(admin/,admin.site.urls),path(polls/,include(polls.urls),1234567TIME_ZONE=Asia/Shanghai1我们在这定义了问题、选项模型,问题有内容和发布时间,选项绑定到了个问题,有选项内容和投票数。模型是 django.db.models.M
21、odel 的类,它的变量表数据库中的字段(field),字段有不同的类型(多是简单英单词,你可以直接翻译)。ForeignKey 是多对数据库关系,此外还有对(不常)、多对多(常)的关系。尽管现在我们定义了模型,但我们还没有告诉 Django“这个模型需要被我们的项使”,我们需要把这个应安装进去,修改 mysite/settings.py下我们可以为我们模型成迁移指令你将看到如下输出下可以把迁移指令于我们的数据库这次的输出较少在你搞清楚“迁移”的概念之前,你只需要记住修改 model 后上两条指(makemigrations migrate)连即可(我就是这么活过小学期的)。from djan
22、go.db import modelsclass Question(models.Model):question_text=models.CharField(max_length=200)pub_date=models.DateTimeField(verbose_name=date published)class Choice(models.Model):question=models.ForeignKey(Question,on_delete=models.CASCADE)choice_text=models.CharField(max_length=200)votes=models.Int
23、egerField(default=0)123456789101112INSTALLED_APPS=django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,polls.apps.PollsConfig,123456789python manage.py makemigrations1Migrations for polls:polls/migrations/0001
24、_initial.py -Create model Question -Create model Choice1234python manage.py migrate1Operations to perform:Apply all migrations:admin,auth,contenttypes,polls,sessionsRunning migrations:Applying polls.0001_initial.OK12342.5 管理站点 现在我们将它注册到 admin 站点,你就可以在 admin 站点中看到新加的模型了,修改 polls/admin.py下我们可以在管理站点(ht
25、tp:/127.0.0.1:8000/admin/)“玩玩”我们的模型了。2.6 模型 API 上都是是从站的度对模型对象进操作,下我们模型 API,也就是 Python 代码来进数据库管理(什么,你说要向的真实操作?等下节好了)执这个指令可以进 Python 带的 shell 对 Django 进管理,它的界和你直接执 python 是样的,但是做了些环境配置,直接执 python 进交互式界可能在 import 时遇到些报错。可惜,它的联想功能实在太差,使起来相当费劲,在 PyCharm 直接使 Console 要它便得多。但是单会使 Console 也有弊端,如在服务器上没有这么便的操作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机专业实用技能导引 8 计算机专业 实用 技能 导引
限制150内