Linux下使用django框架
Linux下使用django框架一、首先安装django框架python -m django --version 二、在Linux下使用Pycharm创建Django项目三、创建完后项目的目录如下: 四、配置启动服务器 点击edit configurations ? 在Host里面输入: Django的开发服务器(以后简称服务器)默认运行在内部的8000端口,如果你想指定端口,请在命令中显示给出: python manage.py runserver 8080 如果想修改服务器的ip地址,请按下面的方式运行命令: python manage.py runserver 0.0.0.0:8000 python后需要加上版本号,如:python3.68 manage.py runserver?8080 ? 五、打开Terminal,输入如下命令创建APP:? python manage.py startapp polls 注意:polls为APP的名字,可以自己根据需要修改 创建完目录为: 六、编写视图 在目录:polls/views.py中编写如下代码: from django.http import HttpResponse def index(request): return HttpResponse("Hello,world. You‘re at the polls index.") 为了调用该视图,我们还需要编写urlconf,也就是路由路径。现在,在polls目录中新建一个文件,名字为 from django.conf.urls import url from . import views urlpatterns = [ url(r‘^$‘,views.index,name=‘index‘),] 接下来,在项目的主urls文件中添加 ? from django.conf.urls import include,url from django.contrib import admin urlpatterns = [ url(r‘^polls/‘,include(‘polls.urls‘)),url(r‘^admin/‘,admin.site.urls),] include语法相当于多级路由,它把接收到的url地址去除前面的正则表达式,将剩下的字符串传递给下一级路由进行判断。在路由的章节,有更加详细的用法指导。 include的背后是一种即插即用的思想。项目根路由不关心具体app的路由策略,只管往指定的二级路由转发,实现了应用解耦。app所属的二级路由可以根据自己的需要随意编写,不会和其它的app路由发生冲突。app目录可以放置在任何位置,而不用修改路由。这是软件设计里很常见的一种模式。 建议:除了admin路由外,尽量给每个app设计自己独立的二级路由。 好了,路由设置成功后,启动服务器,然后在浏览器中访问地址 七、数据库安装?打开 如果你想使用其他的数据库,请先安装相应的数据库操作模块,并将settings文件中DATABASES位置的
如果你不是使用默认的SQLite数据库,那么一些诸如USER,PASSWORD和HOST的参数必须手动指定!下面给出一个基于pymysql操作Mysql数据库的例子,更多细节参考后续的数据库章节。 # mysite/settings.py # Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases import pymysql # 一定要添加这两行!通过pip install pymysql! pymysql.install_as_MySQLdb() DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.mysql‘,‘NAME‘: ‘mysite‘,‘HOST‘: ‘192.168.1.1‘,‘USER‘: ‘root‘,‘PASSWORD‘: ‘pwd‘,‘PORT‘: ‘3306‘,} } 在修改settings文件时,请顺便将 同时,请注意settings文件中顶部的 默认情况,
上面的一些应用也需要建立一些数据库表,所以在使用它们之前我们要在数据库中创建这些表。使用下面的命令创建数据表: python manage.py migrate migrate命令将遍历 提示:对于极简主义者,你完全可以在INSTALLED_APPS内注释掉任何或者全部的Django提供的通用应用。这样,migrate也不会再创建对应的数据表。 ?八、创建模型现在,我们来定义模型model,模型本质上就是数据库表的布局,再附加一些元数据。 Django通过自定义Python类的形式来定义具体的模型,每个模型的物理存在方式就是一个Python的类Class,每个模型代表数据库中的一张表,每个类的实例代表数据表中的一行数据,类中的每个变量代表数据表中的一列字段。Django通过模型,将Python代码和数据库操作结合起来,实现对SQL查询语言的封装。也就是说,你可以不会管理数据库,可以不会SQL语言,你同样能通过Python的代码进行数据库的操作。Django通过ORM对数据库进行操作,奉行代码优先的理念,将Python程序员和数据库管理员进行分工解耦。 在这个简单的投票应用中,我们将创建两个模型: from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField(‘date published‘) class Choice(models.Model): question = models.ForeignKey(Question,on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) 上面的代码非常简单明了。每一个类都是 每一个Field实例的名字就是字段的名字(如: question_text 或者 pub_date )。在你的Python代码中会使用这个值,你的数据库也会将这个值作为表的列名。 你也可以在每个Field中使用一个可选的第一位置参数用于提供一个人类可读的字段名,让你的模型更友好,更易读,并且将被作为文档的一部分来增强代码的可读性。 一些Field类必须提供某些特定的参数。例如CharField需要你指定max_length。这不仅是数据库结构的需要,同样也用于数据验证功能。 有必填参数,当然就会有可选参数,比如在votes里我们将其默认值设为0. 最后请注意,我们使用 九、启用模型上面的代码看着有点少,其实包含了大量的信息,据此,Django会做下面两件事:
但是,首先我们得先告诉Django项目,我们要使用投票app。 要将应用添加到项目中,需要在 # djtest/settings.py INSTALLED_APPS = [ ‘polls.apps.PollsConfig‘,‘django.contrib.admin‘,‘django.contrib.auth‘,‘django.contrib.contenttypes‘,‘django.contrib.sessions‘,‘django.contrib.messages‘,‘django.contrib.staticfiles‘, 实际上,在多数情况下,我们简写成‘polls’就可以了: # djtest/settings.py INSTALLED_APPS = [ ‘polls‘,‘django.contrib.staticfiles‘,] 现在Django已经知道你的投票应用的存在了,并把它加入了项目大家庭。 我们需要再运行下一个命令: python manage.py makemigrations polls 你会看到类似下面的提示: Migrations for ‘polls‘: polls/migrations/0001_initial.py: - Create model Choice - Create model Question - Add field question to choice 通过运行
接下来有一个叫做 python manage.py sqlmigrate polls 0001 你将会看到如下类似的文本(经过适当的格式调整,方便阅读) BEGIN; -- -- Create model Choice -- CREATE TABLE "polls_choice" ( "id" serial NOT NULL PRIMARY KEY,"choice_text" varchar(200) NOT NULL,"votes" integer NOT NULL ); -- -- Create model Question -- CREATE TABLE "polls_question" ( "id" serial NOT NULL PRIMARY KEY,"question_text" varchar(200) NOT NULL,"pub_date" timestamp with time zone NOT NULL ); -- -- Add field question to choice -- ALTER TABLE "polls_choice" ADD COLUMN "question_id" integer NOT NULL; ALTER TABLE "polls_choice" ALTER COLUMN "question_id" DROP DEFAULT; CREATE INDEX "polls_choice_7aa0f6ee" ON "polls_choice" ("question_id"); ALTER TABLE "polls_choice" ADD CONSTRAINT "polls_choice_question_id_246c99a640fbbd72_fk_polls_question_id" FOREIGN KEY ("question_id") REFERENCES "polls_question" ("id") DEFERRABLE INITIALLY DEFERRED; COMMIT; 请注意:
如果你感兴趣,也可以运行 现在,我们可以运行migrate命令,在数据库中进行真正的表操作了。 migrations的功能非常强大,允许你随时修改你的模型,而不需要删除或者新建你的数据库或数据表,在不丢失数据的同时,实时动态更新数据库。我们将在后面的章节对此进行深入的阐述,但是现在,只需要记住修改模型时的操作分三步:
之所以要将创建和实施迁移的动作分成两个命令两步走是因为你也许要通过版本控制系统(例如github,svn)提交你的项目代码,如果没有一个中间过程的保存文件(migrations),那么github如何知道以及记录、同步、实施你所进行过的模型修改动作呢?毕竟,github不和数据库直接打交道,也没法和你本地的数据库通信。但是分开之后,你只需要将你的migration文件(例如上面的0001)上传到github,它就会知道一切。 10、使用模型的API?python manage.py shell 11、admin后台管理站点12、视图和模板M 代表模型(Model):负责业务对象和数据库的关系映射(ORM)。 12、1编写视图下面,打开 def detail(request,question_id): return HttpResponse("You‘re looking at question %s." % question_id) def results(request,question_id): response = "You‘re looking at the results of question %s." return HttpResponse(response % question_id) def vote(request,question_id): return HttpResponse("You‘re voting on question %s." % question_id) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |