Ubuntu 建立 virtualenv 虚拟环境并安装Django

来源:互联网 发布:linux :wq没有保存退出 编辑:程序博客网 时间:2024/05/22 07:57

建立项目

1. 建立虚拟环境

安装 virtualenv

 sudo pip3 install virtualenv

创建一个目录

在该目录下创建一个虚拟环境

切换到该目录并执行下面命令:

virtualenv ll_env

激活该虚拟环境

source ll_env/bin/active

附: 如果有使用 fish ,则命令改为

source ll_env/bin/active.fish

停止使用虚拟环境

deactive

2. 安装 Django

(ll_env)learning_log> pip3 install DjangoCollecting Django  Downloading Django-2.0-py3-none-any.whl (7.1MB)    100% |████████████████████████████████| 7.1MB 203kB/s Collecting pytz (from Django)  Downloading pytz-2017.3-py2.py3-none-any.whl (511kB)    100% |████████████████████████████████| 512kB 684kB/s Installing collected packages: pytz, DjangoSuccessfully installed Django-2.0 pytz-2017.3

3. 在 Django 中创建项目

(ll_env) learning_log> django-admin.py startproject learning_log .     --> 不要忘记后面的这个句点( . )(ll_env)learning_log> lslearning_log/  ll_env/  manage.py*(ll_env) learning_log> ls learning_log/__init__.py  learning_log/  manage.py*  settings.py  urls.py  wsgi.py

4. 创建数据库

(ll_env) learning_log> python3 manage.py migrateOperations to perform:  Apply all migrations: admin, auth, contenttypes, sessionsRunning migrations:  Applying contenttypes.0001_initial... OK  Applying auth.0001_initial... OK  Applying admin.0001_initial... OK  Applying admin.0002_logentry_remove_auto_add... OK  Applying contenttypes.0002_remove_content_type_name... OK  Applying auth.0002_alter_permission_name_max_length... OK  Applying auth.0003_alter_user_email_max_length... OK  Applying auth.0004_alter_user_username_opts... OK  Applying auth.0005_alter_user_last_login_null... OK  Applying auth.0006_require_contenttypes_0002... OK  Applying auth.0007_alter_validators_add_error_messages... OK  Applying auth.0008_alter_user_username_max_length... OK  Applying auth.0009_alter_user_last_name_max_length... OK  Applying sessions.0001_initial... OK(ll_env) learning_log> lsdb.sqlite3  learning_log/  ll_env/  manage.py*

4. 查看项目

(ll_env)learning_log> python3 manage.py runserverPerforming system checks...System check identified no issues (0 silenced).December 23, 2017 - 09:11:47Django version 2.0, using settings 'learning_log.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CONTROL-C.

当在浏览器中输入

http://127.0.0.1:8000/

时即可看见相应的页面
**如果出现

That port is already in use(该端口已被占用)

则执行

python3 manage.py runserver 8001

创建应用程序

1. 创建应用程序

当前,前面终端窗口中的应用程序还运行着 runserver。灾打开一个新的终端窗口,执行:

learning_log> source ll_env/bin/activate.fish(ll_env) learning_log> python3 manage.py startapp learning_logs(ll_env) learning_log> lsdb.sqlite3  learning_log/  learning_logs/  ll_env/  manage.py*(ll_env) learning_log> ls learning_logsadmin.py  apps.py  __init__.py  migrations/  models.py  tests.py  views.py

命令 startapp + appName 让 Django 建立应用程序所需的基础设施。

2. 定义模型
打开 models.py,然后编辑

from django.db import models# Create your models here.class Topic(models.Model):    """用户学习到主题"""    text = models.CharField(max_length=200)    date_added = models.DateTimeField(auto_now_add=True)    def _str_(self):        """返回模型到字符串表示"""        return self.text

3. 激活模型
打开 settings.py(位于 learning_log/learning_log中),然后你将看到:

NSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
]

这是一个元组,告诉 Django 项目由哪些应用程序组成,然后改为:

NSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,

# 我到应用程序
‘learning_logs’,
]

4. 让 Django 修改数据库

(ll_env) learning_log> python3 manage.py makemigrations learning_logsMigrations for 'learning_logs':  learning_logs/migrations/0001_initial.py    - Create model Topic

命令 makemigrations 让 Django 确定该如何修改数据库,使其能够储存与我们定义到新模型相关联的数据。其创建了一个 0001_initial.py到迁移文件,这个文件将在数据库中为模型 Topic 创建一个表。
下面应用这种迁移,让 Django 替我们修改数据库:

(ll_env)learning_log> python3 manage.py migrateOperations to perform:  Apply all migrations: admin, auth, contenttypes, learning_logs, sessionsRunning migrations:  Applying learning_logs.0001_initial... OK

3. Django 管理网站

  • 创建超级用户
(ll_env)learning_log> python3 manage.py createsuperuserUsername (leave blank to use 'yinren'): Email address: Password: Password (again): Superuser created successfully.

其中,email 可以选填,而且你的密码将会以散列值存储

  • 向管理网站注册模型
    我们创建 learning_logs 时, Django 在 models.py 所在到目录中创建了一个名为 admin.py的文件,为向管理网站注册 Topic,请输入:

    from django.contrib import admin
    from learning_logs.models import Topic

    admin.site.register(Topic)

    这些代码导入我们要注册到模型 Topic,再使用 admin.site.register() 让 Django 通过管理网站管理我们的模型
    这时运行

    python3 manage.py runserver

    然后访问

    http://127.0.0.1:8000/admin/

    4. 定义模型 Entry

from django.db import modelsclass Topic(models.Model):    # 用户学习到主题    text = models.CharField(max_length=200)    date_added = models.DateTimeField(auto_now_add=True)    def _str_(self):        # 返回模型到字符串表示        return self.textclass Entry(models.Model):    # 学到到有关某个主题到具体知识    topic = models.ForeignKey(Topic)    text = models.TextField()    date_added = models.DateTimeField(auto_now_add=True)    class Meta:        verbose_name_plural = 'entries'    def _str_(self):        # 返回模型到字符串表示        return self.text[:50] + "..."

未完,待续。。。