zoukankan      html  css  js  c++  java
  • Django(1.7 part1)

    1. django安装: django解压后目录下有一个setup.py文件,在命令行运行python setup.py install,当前前提是已经安装了python才能执行命令,然后用下面命令检查django是否安装成功:
      import django
      print(django.get_version())
    2. 创建project: 在命令行进入一个想用来存放project code的目录,然后运行命令:

      #django-admin.py的路径如果不在环境变量中,则要打上全路径
      django-admin.py startproject mysite

      创建的project目录结构如下:

      mysite/ #工程根目录,可以重命名
          manage.py #命令行工具,用于与django project交互,是对django-admin.py的轻封装,每个django           
      # projec都会自动创建它
      mysite/ __init__.py #告诉Python mysite是一个package settings.py #配置django project urls.py #django project中的url wsgi.py #python web server gateway interface,python定义的web服务器与web服务程序或框架通信接口
    3. database setup: 打开settings.py文件,找到Databases变量,默认使用的是python自带的sqlite db

      DATABASES = {
          'default': {
              'ENGINE': 'django.db.backends.sqlite3',
              'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
          }
      }


      如果使用的是其他数据库,则需要安装相应的数据库包,配置项也要指定一些额外的配置如USER,PASSWORD,HOST等,并且db要在数据库中创建好,如:

      DATABASES = {
          'default': {
              'ENGINE': 'django.db.backends.postgresql_psycopg2',
              'NAME': 'db name',
              'USER': 'mydatabaseuser',
              'PASSWORD': 'mypassword',
              'HOST': '127.0.0.1',
              'PORT': '5432',
          }
      }


      如果要使用manage.py自动为model创建表,django必须在数据库中有相应的权限

    4. settings.py中的TIME_ZONE用于设置时区,INSTALL_APPS表示当前project中激活的django app,哪些模块不需要刻意去掉,有部分模块需要使用数据库表,所以在使用它们前要先调用manage.py migrate命令创建必要的数据库表。INSTALL_APPS默认包括如下模块:

      • django.contrib.admin:the admin site

      • django.contrib.auth:an authentication system

      • django.contrib.contenttypes:a framework for content types

      • django.contrib.sessions:a session framework

      • django.contrib.messages:a messaging framework

      • django.contrib.staticfiles:a framework for managing static files

    5. Python自带了一个development web server,只能用于开发,不能用于生产环境,使用manage.py runserver [port | ip:port]命令启动.development web server每次请求都会重新调用Python code,所以改动python code不需要重启web server,但添加文件需要重启server

    6. project和app的关系:

      • app是一个weba application,实现了某项功能,如log system,poll app等

      • project是一个web站点的一系列配置和apps的集合

      • 一个project可以包含多个apps,一个app可以属于多个project

    7. 创建modules:在project的目录下执行如下命令:

      manage.py startapp polls

      会创建一个文件夹polls,也可以在python安装目录下的其他目录创建文件夹,结构如下:

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

      创建使用database的web app,第一步就是创建model,在models.py文件里添加继承自models.Model的类,

      #polls/models.py
      
      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)

      然后通过配置settings.py的INSTALLED_APPS对象把polls app插入到django.这样django知道包含了polls app

      INSTALLED_APPS = (
          'django.contrib.admin',
          'django.contrib.auth',
          'django.contrib.contenttypes',
          'django.contrib.sessions',
          'django.contrib.messages',
          'django.contrib.staticfiles',
          'polls',
      )

      然后调用manage.py makemigrations polls命令告诉django更改了model(这种情况是添加了新model),要把改动存到migration,migration是存放model改动的磁盘文件,如polls/migrations/0001_initial.py,其内容是一个migration class.使用manage.py sqlmigrate polls 0001可以查看migration执行的sql 命令,只是查看命令并不执行命令。在数据库中创建model table需要执行manage.py migrate,该命令会对所有未执行migrate的migration执行migrate.django会在数据库中建一张django_migrations表跟踪哪些migrate了.总结更改model的三个步骤:

      • 在models.py中更改model

      • 运行manage.py makemigrations为更改创建migration

      • 运行manage.py migrate 数据库中应用更改

    8. 将models在数据库中创建后,可以在命令行里操作这些model.启动命令行要使用manage.py shell而不是用python命令,因为manage.py shell会设置环境变量DJANGO_SETTINGS_MODULE=mysite.settings.py.

      import os
      print(os.environ['DJANGO_SETTINGS_MODULE'])
      #mysite.settings

      之后可以在命令行里操作model,model的改动也可以通过save()函数保存到数据库中

  • 相关阅读:
    奥卡姆剃刀和没有免费的午餐定理
    print("decimal hex chr {0:^30}".format("name")) 是什么意思
    python爬虫准备知识---2、为什么选择python来进行爬虫
    python日常疑难---2、python中查看函数帮助
    python超简单实用爬虫操作---6、模拟登录获取数据
    python requests库 爬取视频
    利用Python中的requests库爬取视频的图片
    python超简单实用爬虫操作---5、爬取视频
    python超简单实用爬虫操作---4、爬取图片
    用Intent实现activity的跳转
  • 原文地址:https://www.cnblogs.com/phenixyu/p/3987197.html
Copyright © 2011-2022 走看看