Django(一)——the first try

Django(一)——the first try

标签(空格分隔): Django


安装Django 首先需要安装python,一般Ubuntu已经自带了python,如果没有,执行

$ sudo apt-get python

然后,下载并安装Django,使用命令

$ sudo apt-get install python-pip
$ sudo pip install Django
$ python
>>>import Django   //导入Django
>>>Django.VERSION  //查看版本号

或者

$ python -c "import django; print(django.get_version())"

以检查安装成功否

新建项目

然后,在命令行切换到你想建立项目的目录以保存代码(别在电脑根目录下)

$ django-admin.py startproject 

此命令会于当前目录新建一个名为你设置的项目名的文件夹,比如mysite,则其目录结构会如下

mysite/
    manage.py
    mysite/
       __init__.py
       settings.py
       urls.py
       wsgi.py

目录结构如下:

  • 外层 mysite/ 目录只是你项目的一个容器。对于 Django 来说该目录名并不重要; 你可以重命名为你喜欢的。
  • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。 你可以在 django-admin.py and manage.py 中查看关于 manage.py 所有的细节。
  • 内层 mysite/ 目录是你项目中的实际 Python 包。该目录名就是 Python 包名,通过它你可以导入它里面的任何东西。 (e.g. import mysite.settings).
  • mysite/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。(如果你是 Python 新手,请查看官方文档了解 关于包的更多内容 。)
  • mysite/settings.py: 该 Django 项目的设置/配置。请查看 Django settings 将会告诉你如何设置。
  • mysite/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站“目录”。请查看 URL dispatcher 可以获取更多有关 URL 的信息。
  • mysite/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。请查看 How to deploy with WSGI 获取更多细节。

数据库安装

现在,进行数据库设置,很多时候这是必要的,为了使网站支持数据库功能
编辑mysite/settings.py,修改DATABASES中的default键值

ENGINE

在’django.db.backends.sqlite3’,’django.db.backends.postgresql_psycopg2’, ‘django.db.backends.mysql’, or ‘django.db.backends.oracle’中选一个,作为新手用python自带的sqlite3就好了

NAME

用以存放数据库文件及为其命名,默认值os.path.join(BASE_DIR, ‘db.sqlite3’)会在项目目录下新建此数据库文件

此外,还可修改下时区,在 mysite/settings.py内的TIME_ZONE的值设置为 Asia/Shanghai

settings.py下的第一部分内容,INSTALLED_APPS作为已安装应用的声明,所有为项目开发的应用的启用都在此添加以声明,此处默认有django自带的一些网络应用,这些网站应用可能需要数据库某些表项的支持,所以在命令行下输入命令

$ python manage.py migrate

此时如果有要求设置数据库管理员账户请逐一输入用户名,邮箱,密码(不是邮箱密码),没有则后续会有要求。记得有的时候这样做就对了。

开发用服务器

现在可以尝试打开服务器了,命令

$ python manage.py runserver

可以打开服务器测试(默认网址与端口:http://127.0.0.1:8000/)

注意不要在任何类似生产环境中使用此服务器。它仅适用于开发环境。(Django提供的只是 Web 框架的业务,而不是 Web 服务器。)

创建模块

通过manage.py 文件创建一个投票应用,以便它可以作为顶层模块导入:

$ python manage.py startapp polls

此命令会在当前目录新建一个polls文件目录,有以下内容组成:

polls/
    __init__.py
    admin.py
    migrations/
        __init__.py
        models.py
        tests.py
        views.py

这就是我们的投票应用
在 Django 中编写一个有数据库支持的 Web 应用的第一步就是定义模型 – 从本质上讲就是数据库设计及其附加的元数据。
现在我们为投票应用创建两个模型, QusetionChoiceQuestion 有问题和发布日期两个字段。Choice 有两个字段: 选项 ( choice ) 的文本内容和投票数。每一个 Choice 都与一个 Poll 关联。于是可在应用的models.py文件内创建两个模型

    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)
        choice_text = models.CharField(max_length=200)
        votes = models.IntegerField(default=0)

内容解释:两个模块都是作为一个类继承自django.db.models.Model的子类,分别定义了一些类的变量及其在数据库中代表的内容(保存时作为数据表项),其中每个变量都由一个Field的实例来表现并定义其数据类型。一些变量还需要初始化一些参数如上所示,用ForeignKey来让每个Choice关联一个question

激活模块

在mysite/settings.py的INSTALLED_APPS内新添一行'polls',作为对投票应用的声明
随后运行命令

$ python manage.py makemigrations polls

来告诉Django有关models的变化(这里是新建),此时会在mysite/polls/migrations中生成0001_initial.py说明新模型中的变化。通过命令$ python manage.py sqlmigrate polls 0001可以返回投票模型的SQL语句
接着运行命令

$ python manage.py migrate

来应用这些更改的数据

使用API

通过$ python manage.py shell命令打开python的shell,在此利用Django提供的API接口对数据进行操作
相关的命令有:
导入:>>> from polls.models import Question, Choice
新建:>>> q = Question(question_text="What's new?", pub_date=timezone.now())
保存:>>> q.save()
查看:>>> q.id >>> q.question_text >>> q.pub_date
修改:>>> q.question.text = 'What's up?'
查看所有:>>> Question.objects.all()
以及各种寻找特定数据的方法:
使用ID:>>> Question.objects.filter(id=1)>>> Question.objects.get(pk=1)
使用字段:Question.objects.filter(question_text__startswith='What')
通过在models.py文件中加入

    def __str__(self):
        return self.choice_text

来为模块命名
也可以自定义一些函数实现想要的功能。
因为Choice还与Question关联,所以有:
打开一个Qusetion数据:>>> q = Question.objects.get(pk=1)
查看Chocie关联:>>> q.choice_set.all()
新建一个q关联下的Choice:>>> c = q.choice_set.create(choice_text='Not much', votes=0)
查看choice关联的Question:>>> c.question
查看question的choice及其数目:>>> q.choice_set.all()>>> q.choice_set.count()
过滤查找某一Choice:>>> c = q.choice_set.filter(choice_text__startswith='Not mu')
删除:>>> c.delete()

你可能感兴趣的:(Django学习)