Django基础

一、安装

  官方地址 https://www.djangoproject.com/download/

  最新版git地址 https://github.com/django/django

  如果安装了pip,可以直接用命令进行安装,也可以去下载最新版的Django包,进入目录,运行python setup.py install进行安装

  安装完测试一下是否安装成功  

1 >>> import django
2 >>> django.VERSION
3 (1, 10, 0, u'alpha', 0)
4 >>> 
View Code

二、项目启动以及各模块介绍

  1、新建一个项目

    进入你的目录,运行命令:python django-admin.py startproject mysite

  注意1:如果不行,则把django-admin.py的路径写上,是python的一个bug

    python D:python27Libsite-packagesDjango-1.10-py2.7.eggdjangoindjango-admin.py startproject mysite

  注意2:路径不要有空格,以下这种找不到

    python D:Program filepython27Libsite-packagesDjango-1.10-py2.7.eggdjangoindjango-admin.py startproject mysite

  注意3:尝试着加了环境变量,然而并没有用,还是得带路径

  2、启动服务

    进入mysite目录下,运行命令:python manage.py runserver

    在浏览器输入 http://127.0.0.1:8000/ 进入欢迎页面

  注意1:端口号默认8000,如果要修改端口号——python manage.py runserver 8080

  注意2:若要允许非本地访问—— python manage.py runserver 0.0.0.0:8000(端口号可自定义,本地网络中的其他计算机可访问)

  3、目录结构以及各个模块

    cmd下运行tree /f mysite即可查看mysite的目录结构

    

  (1)db.sqlite3 —— sqlite3数据库相关的,如果是用的mysql或者其他,可以不管

  (2)manage.py —— 启动服务器会首先调用这个文件,如上面python manage.py runserver这条命令

     这个文件本身不需要我们修改,但是这个文件包含这样一行代码,调用了settings文件

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

  (3)settings.py——配置文件

   1)设置数据库:

1 DATABASES = {
2     'default': {
3         'ENGINE': 'django.db.backends.sqlite3',
4         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
5     }
6 }

   自定义:包括引擎、数据库名称、用户名、密码、host地址、端口号

 1 DATABASES = {
 2     'default': {
 3         'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
 4         'NAME': 'ProjPro',                      # Or path to database file if using sqlite3.
 5         'USER': 'root',                      # Not used with sqlite3.
 6         'PASSWORD': '',                  # Not used with sqlite3.
 7         'HOST': '127.0.0.1',                      # Set to empty string for localhost. Not used with sqlite3.
 8         'PORT': '3306',                      # Set to empty string for default. Not used with sqlite3.
 9     }
10 }

    2)设置根urls文件名称

      ROOT_URLCONF = 'mysite.urls'

    3)设置templates的目录位录,template目录下存放的是html文件,比如:   

      TEMPLATE_DIRS = ('/opt/Proj/ProjPortal/templates',)

    4)设置static的目录,如果有自定义的静态文件(image、js等):

      STATICFILES_DIRS = ('/opt/Proj/ProjPortal/static',)

  (4)__init__.py——每个目录下都要有一个此文件,文件可以空着,也可以写上一句__all__ = ['urls']
  (5)urls.py    

 1 from django.conf.urls import patterns, include, url
 2 from django.conf.urls.defaults import *
 3 from django.conf import settings
 4 from django.conf.urls.static import static
 5 from django.views.generic.base import RedirectView
 6 import views
 7 urlpatterns = patterns('',
 8     # url(r'^$', views.index),
 9     url(r'^project_list', views.project_list),
10     url(r'^project_add', views.project_add),  # 点击添加项目
11     url(r'^project_edit', views.project_edit), # 点击编辑项目
12     url(r'^projectEditSave', views.projectEditSave), # 确定编辑
13     url(r'^project_delete', views.project_delete), # 删除项目
14     url(r'^projectAddSave/$', views.projectAddSave), 
15 )

    这是我之前代码中的一个例子,views文件里是逻辑代码,这个urls文件是干嘛使的呢?根据url定位方法

    比如:url(r'^project_list', views.project_list),意思是如果url里含有project_list,那就去调用views类里的project_list方法进行处理

  (6)views.py —— 业务逻辑处理,在目录中新建一个views.py文件    

 1 def project_list(request):
 2     project_info=Project_info.objects.all().order_by('id').values() 
 4     # 项目列表
 5     project_list=[]
 6     if len(project_info)!=0:
 7         for item in project_info:
 8             temp=dict(id=item['id'],project_name=item['project_name'],project_desc=item['project_desc'],project_type=item['project_type'],product_line=item['product_line'],product=item['product'],start_time=item['start_time'])
 9             project_list.append(item)
10     return render_to_response("pro_list.html",locals())

    上面是views文件当中的一个方法,作为业务处理层,就是把需要的数据返回给前端页面,最后一句,包含两个参数:

    pro_list.html : 相应的页面

    locals : 把这个方法中定义的所有变量传给前端页面,只要是这个方法的全局变量,全部都会传给前端,前端按需取用

  (7)models.py —— 数据抽象

    上述代码用到了一个Project_info,这个就是一个model,对应数据库中的一个表    

 1 class Project_info(models.Model):
 2     id = models.AutoField(primary_key = True)
 3     project_name=models.TextField()
 4     project_desc=models.TextField()
 5     project_type=models.TextField()
 6     product_line=models.TextField()
 7     product=models.TextField()
 8     start_time=models.TextField()
 9     class Meta:
10         db_table=u'project_info'

    定义了一些字段,db_table=u'project_info' 指定了对应的数据库表

    views当中的一行代码:project_info=Project_info.objects.all().order_by('id').values() —— 从数据库的project_info表中拿出所有数据

  总结:

  1、新建项目 python django-admin.py startproject mysite
    2、定义urls、views、models 
  3、__init__.py
    4、settings.py
 
  推荐资料 http://docs.30c.org/djangobook2/,非常全面
原文地址:https://www.cnblogs.com/naonaoling/p/5348032.html