目录
Job List
Job Detail
首页 后端开发 Python教程 Windows下Python的Django框架环境部署及应用编写入门

Windows下Python的Django框架环境部署及应用编写入门

Jun 10, 2016 pm 03:05 PM
django python windows

环境搭建
1、下载所需的软件包:
(1)python安装包
(2)django安装包
以下2个包其实是安装python包管理工具,在后面安装django文档包模块时会用到,下载网站是pypi
(1)setuptools.exe 
(2)pip

2、安装所需的软件包:
python安装包是exe,setuptools也是exe,所以直接双击安装即可,先安装
django、pip是python模块包:安装时先解压,而后进入目录后使用命令:python setup.py install 安装即可

3、测试python及django
python和setuptools因为是exe安装方式,已经帮你添加了环境变量,安装后可以直接使用
django、pip安装后需要手动把它们的安装目录添加到环境变量
新起cmd:输入python,看到能进入python交互解释器则python没有问题
输入django-admin.py --help 能看到使用帮助提示则说明安装成功

4、建立第一个django项目:
以下cmd命令会在当前目录下建立一个django项目djangoproject1:

django-admin.py startproject djangoproject1
登录后复制

这个项目目录下有4个文件:

__init__.py
manage.py   ###功能与django-admin.py相同的文件,只是这个主要用于管理当前项目
settings.py   ###当前项目的设置文件,比如:webapp目录的设置、数据库连接的设置、模板目录的设置等
urls.py       ###当前项目url导航的设置,用一个正则匹配模式这匹配url规则并映射到指定的文件去处理请求
登录后复制

5、安装django自带的admin应用,即安装一个webapp
修改setting.py文件中的如下内容:

DATABASES = { 
  'default': { 
    'ENGINE': 'sqlite3', #设置使用sqlite3数据库 
    'NAME': r'C:\Users\。。。。\test.db',           # sqlite3的文件路径 
    'USER': '',           # Not used with sqlite3. 
    'PASSWORD': '',         # Not used with sqlite3. 
    'HOST': '',           # Set to empty string for localhost. Not used with sqlite3. 
    'PORT': '',           # Set to empty string for default. Not used with sqlite3. 
  } 
} 
 
 
INSTALLED_APPS = ( 
  'django.contrib.auth', 
  'django.contrib.contenttypes', 
  'django.contrib.sessions', 
  'django.contrib.sites', 
  'django.contrib.messages', 
  'django.contrib.staticfiles', 
  # Uncomment the next line to enable the admin: 
  'django.contrib.admin',  ##取消原来的注释 
  # Uncomment the next line to enable admin documentation: 
  'django.contrib.admindocs',  ##取消原来的注释 
) 
登录后复制

修改urls.py问件中的如下内容:

# Uncomment the next two lines to enable the admin: 
from django.contrib import admin ##取消注释 
admin.autodiscover()  ##取消注释 
 
  # Uncomment the admin/doc line below to enable admin documentation: 
  url(r'^admin/doc/', include('django.contrib.admindocs.urls')),  ###取消注释 
 
  # Uncomment the next line to enable the admin: 
  url(r'^admin/', include(admin.site.urls)),  ###取消注释 

登录后复制

6、同步admin应用的数据库:
在项目主目录下使用命令:

manage.py syncdb
登录后复制

会提示创建一个超级用户,输入yes并按照提示创建一个账号即可

7、测试admin应用:
使用命令启动django的服务:

manage.py runserver 
登录后复制

浏览器中输入地址:http://127.0.0.1:8000/admin/
如果出现登录界面则说明admin应用安装成功,使用第6步中创建的账号登录即可

8、安装admin的文档模块:
命令行输入:

pip install docutils
登录后复制

安装完成后重启django服务,访问地址http://127.0.0.1:8000/admin/doc/

9、使用和学习admin应用:
这个应用主要用于管理项目的应用的,同样可以很方面的管理数据库内容,如果想自己的项目也能在这里被管理则需要进行一个配置即可,后面将会有相关操作
默认其功能有:管理admin应用的用户、用户组;添加站点

10、创建自己的应用:
项目主目录下使用命令:

manage.py startapp myapp
登录后复制

命令会在当前目录下创建一个app的目录mysite,其下有文件:

__init__.py
models.py   ##用于创建数据模型的,即设计数据库结构的,在这里面配置到数据库的模块,django会自动帮你创建相应的数据库表结构
views.py    ##视图文件,用于响应用户请求并在处理后返回结果,这里面主要编写请求事件的响应函数
登录后复制

11、安装自己的应用:
和安装admin应用一样,修改settings.py文件

INSTALLED_APPS = ( 
    ...... 
    'djangoproject1.myapp',    ###添加这一句 
) 

登录后复制

12、创建第一个页面:
修改mysite目录下的views.py文件,内容如下:

from django.http import HttpResponse 
 
def home(request): 
  return HttpResponse("Hello Django") 

登录后复制

13、设置url请求页面:
修改urls.py内容如下:

urlpatterns = patterns('', 
  # Examples: 
  url(r'^$', 'djangoproject1.myapp.views.home', name='home'), ) 

登录后复制

14、测试自己的应用:
重启django服务,

manage.py runserver
登录后复制

访问:http://127.0.0.1:8000
如果出现:hello django 则说明设置成功


第一个app实现
在环境搭建好了的基础上我们还要继续做的就是往里面填内容了。也就是网页的实际内容,比如:页面内容,比如数据库内容,比如模块内容,比如css,js内容等,那么在django中是怎么整合这些的,在这里记录一下。
1、创建一个模式:
模式其实就是整个网站的数据模型,也就是数据库的结构,即数据表结构,所以创建一个模式就是设计一张数据表,只不过在django的模式里用代码形式来表示模式,然后它会帮助你自动生成响应的数据表及对应的关系,而且对支持的数据库都是统一的表示形式,即兼容性不错,是不是很方便啊!样例见下:
编写app目录中的models.py文件

from django.db import models 
 
class Location(models.Model): 
  city = models.CharField(max_length=50) 
  state = models.CharField(max_length=50, null=True, blank=True) 
  country = models.CharField(max_length=50) 
  def __str__(self): 
    if self.state: 
      return "%s, %s, %s" % (self.city, self.state, self.country) 
    else: 
      return "%s, %s" % (self.city, self.country) 
 
class Job(models.Model): 
  pub_date = models.DateField() 
  job_title = models.CharField(max_length=50) 
  job_description = models.TextField() 
  location = models.ForeignKey(Location) 
  def __str__(self): 
    return "%s (%s)" % (self.job_title, self.location) 
登录后复制

2、让模式生效:
在模式设计好了后就可以使用它,让它帮你干活啦,查看模式创建的表是否正确的命令为:manage.py sql app_dir, 这样可以查看表结构的原型了。在检查完表结构原型后就应用之,命令为:manage.py syncdb, 这个其实就是真正的在数据库中建表。

3、如何应用模式:
模式依然生效后就是如何去应用它,也就是获取其中的数据为我们服务;在views.py文件中包括如下代码即可调用具体的数据表;

from django.template import Context, loader 
from django.http import HttpResponse 
from myapp.models import Job 
 
 
def home(request): 
  object_list = Job.objects.order_by('-pub_date')[:10] 
  str_count = "The Count of job table is %s"%Job.objects.count() 
  str_job_desc = "<br>".str(join(Job.objects.all())) 
 
  return HttpResponse(str_count + "<br>" + str_job_desc) 
登录后复制

重启django,访问http://127.0.0.1:8000,如果出现字符信息说明正确,只是这时显示的是数据数据总数为0,内容为空而已

4、在admin中配置我的应用:
上面的内容没有数据,那么就造一些数据:一种是自己写sql去造;不过还有一种方法就是在admin应用中去造数据,当然首先是配置admin来管理我创建的应用。在我的应用目录中新建一个admin.py文件,其内容如下:

from django.contrib import admin 
from mydjango.myapp import models 
 
class DocumentAdmin(admin.ModelAdmin): 
  pass 
 
class CommentAdmin(admin.ModelAdmin): 
  pass 
 
admin.site.register(models.Location, DocumentAdmin) 
admin.site.register(models.Job, CommentAdmin) 
登录后复制

重启django,访问http://127.0.0.1:8000/admin, 就可以看到我的应用中的数据可以在这里管理了。

5、在admin中管理我的应用:
在admin中设置好我的应用后,就可以通过admin来为我的应用添加数据了。具体就是点击添加、输入内容、保存即可。等有了数据后我们在回到主页看看是不是页面内容就由内容了?

6、开始设置模板:
内容少的时候我们可以每个页面都自己写,但是当页面变多,而且还有很多相同部分时,我们就希望能不要写那些同样的东西了,那么模板就是为了解决这样的问题而出现的,在django中配置模板的方法是在项目主目录的settings.py文件中修改如下内容:

TEMPLATE_DIRS = ( 
  "C:/Users/xiaowu/workspace/mydjango/templates", ##注意斜线的格式,是/而不是\,即使在windows下 
) 
登录后复制

7、创建模板文件:
在settings.py文件设置的模板目录下新建模板文件,模板文件其实都是html文件,只是其中的内容包含一些特殊的占位符,在实际应用中会替换掉其中的内容;这些内容就是在代码里实现出来的数据了;而且模板还可以继承,这个也比较好用,就好像程序的代码块一样分的越细可重用性就越好。样例如下:
template主目录下的base.html文件内容

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
 <head> 
  <title>Company Site: {% block title %}Page{% endblock %}</title> 
  {% block extrahead %}{% endblock %} 
 </head> 
 <body> 
  {% block content %}{% endblock %} 
 </body> 
</html> 
template/mytemp目录下的base.html内容
[html] view plain copy
{% extends "base.html" %} 
 
{% block extrahead %} 
  <style> 
    body { 
      font-style: arial; 
    } 
    h1 { 
      text-align: center; 
    } 
    .job .title { 
      font-size: 120%; 
      font-weight: bold; 
    } 
    .job .posted { 
      font-style: italic; 
    } 
  </style> 
{% endblock %} 
登录后复制

template/mytemp目录下的job_list.html

{% extends "jobs/base.html" %} 
 
{% block title %}Job List{% endblock %} 
 
{% block content %} 
  <h1 id="Job-List">Job List</h1> 
  <ul> 
  {% for job in object_list %} 
    <li><a href="{{ job.id }}">{{ job.job_title }}</a></li> 
  {% endfor %} 
  </ul> 
{% endblock %} 
登录后复制

template/mytemp目录下的job_detail.html

{% extends "mytemp/base.html" %}
{% block title %}Job Detail{% endblock %}
{% block content %}
  <h1 id="Job-Detail">Job Detail</h1>
  <div class="job">
    <div class="title">
      {{ job.job_title }}
      -
      {{ job.location }}
    </div>
    <div class="posted">
      Posted: {{ job.pub_date|date:"d-M-Y" }}
    </div>
    <div class="description">
      {{ job.job_description }}
    </div>
  </div>
{% endblock %}
登录后复制


8、应用模板文件:
在django中是在views.py中具体的引用模板,具体方法见下:
方法一:

from django.template import Context, loader 
from django.http import HttpResponse 
from myapp.models import Job 
 
def home(request): 
  object_list = Job.objects.order_by('-pub_date')[:10] 
  t = loader.get_template('mytemp/job_list.html') 
  c = Context({ 
    'object_list': object_list, 
    }) 
  return HttpResponse(t.render(c)) 
登录后复制

方法二:

from django.shortcuts import get_object_or_404, render_to_response 
from myapp.models import Job 
 
def home(request,job_id): 
  job = get_object_or_404(Job, pk=job_id) 
  return render_to_response('mytemp/job_detail.html', 
               {'object': job}) 

登录后复制

9、最后的views.py文件内容如下:

from django.template import Context, loader 
from django.http import HttpResponse 
from myapp.models import Job 
from django.shortcuts import get_object_or_404, render_to_response 
 
def home(request): 
  return HttpResponse("Hello Django") 
 
   
def index(request):  
  object_list = Job.objects.order_by('-pub_date')[:10]  
  t = loader.get_template('mytemp/job_list.html')  
  c = Context({  
    'object_list': object_list,  
    })  
  return HttpResponse(t.render(c))  
   
   
def detail(request,job_id):  
  job = get_object_or_404(Job, pk=job_id)  
  return render_to_response('mytemp/job_detail.html',  
               {'object': job})  

登录后复制

9、配置index、detail视图的url,在urls.py添加如下内容:

url(r'^job/$', ('mydjango.myapp.views.index')),
url(r'^job/(&#63;P<job_id>\d+)/$',('mydjango.myapp.views.detail')),
登录后复制

然后重启服务后,访问http://127.0.0.1:8000/job/

ok,所有的结构都已经用到了,剩下的就是想出一个有趣的项目赶紧上手吧!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1423
52
Laravel 教程
1319
25
PHP教程
1269
29
C# 教程
1248
24
PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

Golang vs. Python:性能和可伸缩性 Golang vs. Python:性能和可伸缩性 Apr 19, 2025 am 12:18 AM

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

Python与C:学习曲线和易用性 Python与C:学习曲线和易用性 Apr 19, 2025 am 12:20 AM

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

如何解决Laravel中复杂的BelongsToThrough关系问题?使用Composer可以! 如何解决Laravel中复杂的BelongsToThrough关系问题?使用Composer可以! Apr 17, 2025 pm 09:54 PM

在Laravel开发中,处理复杂的模型关系一直是个挑战,特别是当涉及到多层级的BelongsToThrough关系时。最近,我在处理一个多级模型关系的项目中遇到了这个问题,传统的HasManyThrough关系无法满足需求,导致数据查询变得复杂且低效。经过一番探索,我找到了staudenmeir/belongs-to-through这个库,它通过Composer轻松安装并解决了我的困扰。

laravel安装代码 laravel安装代码 Apr 18, 2025 pm 12:30 PM

要安装 Laravel,需依序进行以下步骤:安装 Composer(适用于 macOS/Linux 和 Windows)安装 Laravel 安装器创建新项目启动服务访问应用程序(网址:http://127.0.0.1:8000)设置数据库连接(如果需要)

git软件安装 git软件安装 Apr 17, 2025 am 11:57 AM

安装 Git 软件包括以下步骤:下载安装包运行安装包验证安装配置 Git安装 Git Bash(仅限 Windows)

See all articles