django运行需要迁移是什么意思(2023年最新分享)

导读:很多朋友问到关于django运行需要迁移是什么意思的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

django什么意思

[编辑本段]概述

Django(发音:/ˈdʒæŋgoː/) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守 BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。

Django 根据比利时的爵士音乐家Django Reinhardt命名,他是一个吉普赛人,主要以演奏吉它为主,还演奏过小提琴等。

[编辑本段]设计哲学

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY(Do Not Repeat Yourself)原则。

Django基于MVC的设计十分优美:

对象关系映射 (ORM,object-relational mapping)

以Python类形式定义你的数据模型,ORM将模型与关系数据库连接起来,你将得到一个非常容易使用的数据库API,同时你也可以在Django中使用原始的SQL语句。

URL 分派

使用正则表达式匹配URL,你可以任意设计的URL,没有框架的特定限定。象你喜欢的一样灵活。

模版系统

使用Django强大而可扩展的模板语言,可以分隔设计、内容和Python代码。并且具有可继承性。

表单处理

你可以方便的生成各种表单模型,实现表单的有效性检验。可以方便的从你定义的模型实例生成相应的表单。

Cache系统

可以挂在内存缓冲或其它的框架实现超级缓冲 -- 实现你所需要的粒度。

会话(session),用户登录与权限检查

快速开发用户会话功能。

国际化

内置国际化系统,方便开发出多种语言的网站。

自动化的管理界面

不需要你花大量的工作来创建人员管理和更新内容。Django自带一个ADMIN site,类似于内容管理系统。

[编辑本段]部署

Django可以运行在Apache上,也可以运行在支持WSGI,FastCGI的服务器上。支持多种数据库,已经支持Postgresql, MySql, Sqlite3。

目前,Google App Engine也支持Django的某些部分。

[编辑本段]文档

Django1.0 建立了强大完整的文档文档体系 (),涵盖了Django的方方面面,并且适合各种水平的读者和开发者. 其中还包含若干个简单的示例,你可以跟随他们一步步体验Django的优美。

django运行需要迁移是什么意思(2023年最新分享)  第1张

python Django项目使用生成迁移文件命令报错求解决

xiaochong是项目名称的话,我估计你应该是修改过项目/文件夹 名称。那么有几个地方需要同步改一下。不然肯定是会报错的

settings.py

ROOT_URLCONF = 你的项目名称.urls

manage.py

os.environ.setdefault(\'DJANGO_SETTINGS_MODULE\', \'你的项目名称..settings\')

wsgi.py、asgi.py

os.environ.setdefault(\'DJANGO_SETTINGS_MODULE\', \'你的项目名称..settings\')

可能还有其它文件里面。可以全文查找一下。修改对应的位置就可以了

另外,如果xiaochong是app名称的话,那就是没有注册APP。settings里面加一下就好了。

希望能帮到你

django生成迁移文件和迁移出现了错误。怎么破

要点一、检查迁移设置或者重新连接主机服务器 在服务器之间进行vm迁移首先要求两个服务器启用迁移功能。例如,使用vmware esx或者esxi的两个服务器必须启用vmotion。如果是hyper-v服务器进行vm迁移,一定要确定两台服务器的动态迁移功能可用。vmware esx或esxi服务器上,在配置选项卡为特定的vsphere客户端启用vmotion,所以it管理员必须使用与每个hypervisor匹配的文档并在每个服务器上启用迁移功能。 在某些情况下,hypervisor的软件问题会导致迁移失败,这时需要在其中(或者两个)受影响的服务器上不断地切换迁移设置。例如,这个问题在vmware esx/esxi 4.0升级到update 2过程中会发生,技术人员不得不不断切换迁移设置。启用设置在每个主机的vsphere配置选项卡上。在esx/esxi 4.0 update 2或之后版本上就可以解决这个问题了。

要点二、检查服务器硬件的兼容性和设备相关性 虚拟化的服务器专门用来将底层的硬件从上层的工作负载抽离——抽离让工作负载迁移变得可能——但是有小部分情况可能会导致源、目的服务器的硬件不兼容,导致迁移失败。 排错的第一步是评估服务器硬件和配置。举个简单的例子,源/目的服务器需要使用完全相同处理器来进行工作负载迁移。每个系统bios的处理或者i/o虚拟化设置稍微有所不同也会引起硬件问题。 当vm依赖目的服务器上不可用的硬件时,也会导致迁移失败。比如,像vmware esx/esxi等hypervisor允许vm连接到物理磁盘。如果vm依赖与源服务器连接的物理磁盘——而目的服务器上没有——迁移就出问题了。安全断开任何本地物理磁盘或者源服务器vm上的客户端设备,然后再重新进行迁移。

如何创建一个Django网站

本文演示如何创建一个简单的 django 网站,使用的 django 版本为1.7。

1. 创建项目

运行下面命令就可以创建一个 django 项目,项目名称叫 mysite :

$ django-admin.py startproject mysite

创建后的项目目录如下:

mysite

├── manage.py

└── mysite

├── __init__.py

├── settings.py

├── urls.py

└── wsgi.py

1 directory, 5 files

说明:

__init__.py :让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。 这是一个空文件,一般你不需要修改它。

manage.py :一种命令行工具,允许你以多种方式与该 Django 项目进行交互。 键入python manage.py help,看一下它能做什么。 你应当不需要编辑这个文件;在这个目录下生成它纯是为了方便。

settings.py :该 Django 项目的设置或配置。

urls.py:Django项目的URL路由设置。目前,它是空的。

wsgi.py:WSGI web 应用服务器的配置文件。更多细节,查看 How to deploy with WSGI

接下来,你可以修改 settings.py 文件,例如:修改 LANGUAGE_CODE、设置时区 TIME_ZONE

SITE_ID = 1

LANGUAGE_CODE = \'zh_CN\'

TIME_ZONE = \'Asia/Shanghai\'

USE_TZ = True

上面开启了 [Time zone]() 特性,需要安装 pytz:

$ sudo pip install pytz

2. 运行项目

在运行项目之前,我们需要创建数据库和表结构,这里我使用的默认数据库:

$ python manage.py migrate

Operations to perform:

Apply all migrations: admin, contenttypes, auth, sessions

Running migrations:

Applying contenttypes.0001_initial... OK

Applying auth.0001_initial... OK

Applying admin.0001_initial... OK

Applying sessions.0001_initial... OK

然后启动服务:

$ python manage.py runserver

你会看到下面的输出:

Performing system checks...

System check identified no issues (0 silenced).

January 28, 2015 - 02:08:33

Django version 1.7.1, using settings \'mysite.settings\'

Starting development server at

Quit the server with CONTROL-C.

这将会在端口8000启动一个本地服务器, 并且只能从你的这台电脑连接和访问。 既然服务器已经运行起来了,现在用网页浏览器访问 。你应该可以看到一个令人赏心悦目的淡蓝色 Django 欢迎页面它开始工作了。

你也可以指定启动端口:

$ python manage.py runserver 8080

以及指定 ip:

$ python manage.py runserver 0.0.0.0:8000

3. 创建 app

前面创建了一个项目并且成功运行,现在来创建一个 app,一个 app 相当于项目的一个子模块。

在项目目录下创建一个 app:

$ python manage.py startapp polls

如果操作成功,你会在 mysite 文件夹下看到已经多了一个叫 polls 的文件夹,目录结构如下:

polls

├── __init__.py

├── admin.py

├── migrations

│ └── __init__.py

├── models.py

├── tests.py

└── views.py

1 directory, 6 files

4. 创建模型

每一个 Django Model 都继承自 django.db.models.Model

在 Model 当中每一个属性 attribute 都代表一个 database field

通过 Django Model API 可以执行数据库的增删改查, 而不需要写一些数据库的查询语句

打开 polls 文件夹下的 models.py 文件。创建两个模型:

import datetime

from django.db import models

from django.utils import timezone

class Question(models.Model):

question_text = models.CharField(max_length=200)

pub_date = models.DateTimeField(\'date published\')

def was_published_recently(self):

return self.pub_date = timezone.now() - datetime.timedelta(days=1)

class Choice(models.Model):

question = models.ForeignKey(Question)

choice_text = models.CharField(max_length=200)

votes = models.IntegerField(default=0)

然后在 mysite/settings.py 中修改 INSTALLED_APPS 添加 polls:

INSTALLED_APPS = (

\'django.contrib.admin\',

\'django.contrib.auth\',

\'django.contrib.contenttypes\',

\'django.contrib.sessions\',

\'django.contrib.messages\',

\'django.contrib.staticfiles\',

\'polls\',

)

在添加了新的 app 之后,我们需要运行下面命令告诉 Django 你的模型做了改变,需要迁移数据库:

$ python manage.py makemigrations polls

你会看到下面的输出日志:

Migrations for \'polls\':

0001_initial.py:

- Create model Choice

- Create model Question

- Add field question to choice

你可以从 polls/migrations/0001_initial.py 查看迁移语句。

运行下面语句,你可以查看迁移的 sql 语句:

$ python manage.py sqlmigrate polls 0001

输出结果:

BEGIN;

CREATE TABLE \"polls_choice\" (\"id\" integer NOT NULL PRIMARY KEY AUTOINCREMENT, \"choice_text\" varchar(200) NOT NULL, \"votes\" integer NOT NULL);

CREATE TABLE \"polls_question\" (\"id\" integer NOT NULL PRIMARY KEY AUTOINCREMENT, \"question_text\" varchar(200) NOT NULL, \"pub_date\" datetime NOT NULL);

CREATE TABLE \"polls_choice__new\" (\"id\" integer NOT NULL PRIMARY KEY AUTOINCREMENT, \"choice_text\" varchar(200) NOT NULL, \"votes\" integer NOT NULL, \"question_id\" integer NOT NULL REFERENCES \"polls_question\" (\"id\"));

INSERT INTO \"polls_choice__new\" (\"choice_text\", \"votes\", \"id\") SELECT \"choice_text\", \"votes\", \"id\" FROM \"polls_choice\";

DROP TABLE \"polls_choice\";

ALTER TABLE \"polls_choice__new\" RENAME TO \"polls_choice\";

CREATE INDEX polls_choice_7aa0f6ee ON \"polls_choice\" (\"question_id\");

COMMIT;

你可以运行下面命令,来检查数据库是否有问题:

$ python manage.py check

再次运行下面的命令,来创建新添加的模型:

$ python manage.py migrate

Operations to perform:

Apply all migrations: admin, contenttypes, polls, auth, sessions

Running migrations:

Applying polls.0001_initial... OK

总结一下,当修改一个模型时,需要做以下几个步骤:

修改 models.py 文件

运行 python manage.py makemigrations 创建迁移语句

运行 python manage.py migrate,将模型的改变迁移到数据库中

你可以阅读 django-admin.py documentation,查看更多 manage.py 的用法。

创建了模型之后,我们可以通过 Django 提供的 API 来做测试。运行下面命令可以进入到 python shell 的交互模式:

$ python manage.py shell

下面是一些测试:

from polls.models import Question, Choice # Import the model classes we just wrote.

# No questions are in the system yet.

Question.objects.all()

[]

# Create a new Question.

# Support for time zones is enabled in the default settings file, so

# Django expects a datetime with tzinfo for pub_date. Use timezone.now()

# instead of datetime.datetime.now() and it will do the right thing.

from django.utils import timezone

q = Question(question_text=\"What\'s new?\", pub_date=timezone.now())

# Save the object into the database. You have to call save() explicitly.

q.save()

# Now it has an ID. Note that this might say \"1L\" instead of \"1\", depending

# on which database you\'re using. That\'s no biggie; it just means your

# database backend prefers to return integers as Python long integer

# objects.

q.id

1

# Access model field values via Python attributes.

q.question_text

\"What\'s new?\"

q.pub_date

datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=UTC)

# Change values by changing the attributes, then calling save().

q.question_text = \"What\'s up?\"

q.save()

# objects.all() displays all the questions in the database.

Question.objects.all()

[Question: Question object]

打印所有的 Question 时,输出的结果是 [Question: Question object],我们可以修改模型类,使其输出更为易懂的描述。修改模型类:

from django.db import models

class Question(models.Model):

# ...

def __str__(self): # __unicode__ on Python 2

return self.question_text

class Choice(models.Model):

# ...

def __str__(self): # __unicode__ on Python 2

return self.choice_text

接下来继续测试:

from polls.models import Question, Choice

# Make sure our __str__() addition worked.

Question.objects.all()

[Question: What\'s up?]

# Django provides a rich database lookup API that\'s entirely driven by

# keyword arguments.

Question.objects.filter(id=1)

[Question: What\'s up?]

Question.objects.filter(question_text__startswith=\'What\')

[Question: What\'s up?]

# Get the question that was published this year.

from django.utils import timezone

current_year = timezone.now().year

Question.objects.get(pub_date__year=current_year)

Question: What\'s up?

# Request an ID that doesn\'t exist, this will raise an exception.

Question.objects.get(id=2)

Traceback (most recent call last):

...

DoesNotExist: Question matching query does not exist.

# Lookup by a primary key is the most common case, so Django provides a

# shortcut for primary-key exact lookups.

# The following is identical to Question.objects.get(id=1).

Question.objects.get(pk=1)

Question: What\'s up?

# Make sure our custom method worked.

q = Question.objects.get(pk=1)

# Give the Question a couple of Choices. The create call constructs a new

# Choice object, does the INSERT statement, adds the choice to the set

# of available choices and returns the new Choice object. Django creates

# a set to hold the \"other side\" of a ForeignKey relation

# (e.g. a question\'s choice) which can be accessed via the API.

q = Question.objects.get(pk=1)

# Display any choices from the related object set -- none so far.

q.choice_set.all()

[]

# Create three choices.

q.choice_set.create(choice_text=\'Not much\', votes=0)

Choice: Not much

q.choice_set.create(choice_text=\'The sky\', votes=0)

Choice: The sky

c = q.choice_set.create(choice_text=\'Just hacking again\', votes=0)

# Choice objects have API access to their related Question objects.

c.question

Question: What\'s up?

# And vice versa: Question objects get access to Choice objects.

q.choice_set.all()

[Choice: Not much, Choice: The sky, Choice: Just hacking again]

q.choice_set.count()

3

# The API automatically follows relationships as far as you need.

# Use double underscores to separate relationships.

# This works as many levels deep as you want; there\'s no limit.

# Find all Choices for any question whose pub_date is in this year

# (reusing the \'current_year\' variable we created above).

Choice.objects.filter(question__pub_date__year=current_year)

[Choice: Not much, Choice: The sky, Choice: Just hacking again]

# Let\'s delete one of the choices. Use delete() for that.

c = q.choice_set.filter(choice_text__startswith=\'Just hacking\')

c.delete()

上面这部分测试,涉及到 django orm 相关的知识,详细说明可以参考 Django中的ORM。

5. 管理 admin

Django有一个优秀的特性, 内置了Django admin后台管理界面, 方便管理者进行添加和删除网站的内容.

新建的项目系统已经为我们设置好了后台管理功能,见 mysite/settings.py:

INSTALLED_APPS = (

\'django.contrib.admin\', #默认添加后台管理功能

\'django.contrib.auth\',

\'django.contrib.contenttypes\',

\'django.contrib.sessions\',

\'django.contrib.messages\',

\'django.contrib.staticfiles\',

\'mysite\',

)

同时也已经添加了进入后台管理的 url, 可以在 mysite/urls.py 中查看:

url(r\'^admin/\', include(admin.site.urls)), #可以使用设置好的url进入网站后台

接下来我们需要创建一个管理用户来登录 admin 后台管理界面:

$ python manage.py createsuperuser

Username (leave blank to use \'june\'): admin

Email address:

Password:

Password (again):

Superuser created successfully.

总结

最后,来看项目目录结构:

mysite

├── db.sqlite3

├── manage.py

├── mysite

│ ├── __init__.py

│ ├── settings.py

│ ├── urls.py

│ ├── wsgi.py

├── polls

│ ├── __init__.py

│ ├── admin.py

│ ├── migrations

│ │ ├── 0001_initial.py

│ │ ├── __init__.py

│ ├── models.py

│ ├── templates

│ │ └── polls

│ │ ├── detail.html

│ │ ├── index.html

│ │ └── results.html

│ ├── tests.py

│ ├── urls.py

│ ├── views.py

└── templates

└── admin

└── base_site.htm

通过上面的介绍,对 django 的安装、运行以及如何创建视 图和模型有了一个清晰的认识,接下来就可以深入的学习 django 的自动化测试、持久化、中间件、国 际 化等知识。

django 怎么迁移oracle数据库

database migrations 是laravel最强大的功能之一。数据库迁移可以理解为数据库的版本控制器。

在 database/migrations 目录中包含两个迁移文件,一个建立用户表,一个用于用户密码重置。

在迁移文件中,up 方法用于创建数据表,down方法用于回滚,也就是删除数据表。

结语:以上就是首席CTO笔记为大家介绍的关于django运行需要迁移是什么意思的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23 13:11
下一篇 2023-09-23 13:11

相关推荐

发表回复

登录后才能评论