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 >>>
二、项目启动以及各模块介绍
1、新建一个项目
进入你的目录,运行命令:python django-admin.py startproject mysite
注意1:如果不行,则把django-admin.py的路径写上,是python的一个bug
python D:\python27\Lib\site-packages\Django-1.10-py2.7.egg\django\bin\django-admin.py startproject mysite
注意2:路径不要有空格,以下这种找不到
python D:\Program file\python27\Lib\site-packages\Django-1.10-py2.7.egg\django\bin\django-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表中拿出所有数据
总结: