推荐工具:
Python工具:PyCharm
数据库查看工具:Navicat
一、创建项目
创建步骤
打开命令行,进入想要安置项目的目录
命令行输入:
djingo-admin startproject myblog
在命令行输入以下指令来启动服务器:
python manage.py runserver
启动服务器,默认地址为:http://127.0.0.1:8000
二、创建应用
创建步骤
打开,命令行,进入项目manage.py的同级目录
创建一个名为blog的应用(APP)
在命令行输入:
python manage.py startapp blog
创建完成后,将应用名添加到settings.py 中的INSTALLED_APPS中
如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog'
]
三、创建第一个响应
编辑blog.views
例如:
from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse('hello world!')
配置URL(此方法不是最优方法)
from django.conf.urls import url
from django.contrib import admin
from blog import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', views.index),
]
总结:
每个响应对应一个函数,函数必须返回一个相应
函数必须存在一个参数,一般约定为request
每一个响应对应一个URL
四、配置URL(常用方法)
一、在myblog下的urls增加include方法
/myblog/urls.py
from django.conf.urls import url,include
from django.contrib import admin
from blog import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')),
]
二、在应用APP下创建一个文件,名字为urls.py 将两者关联(目的是实现每个应用维护各自的urls 以免项目过大,urls不好维护)
/blog/urls.py
from django.conf.urls import url
from django.contrib import admin
import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', views.index),
]
总结:
在url.py 中引入include
在APP目录下 创建 urls.py文件,格式与根urls.py相同
根urls.py中url 函数第二个参数改为 include(‘blog.urls’)
五、第一个Templates(HTML文件)
在APP的根目录下创建Templates目录
在该目录下创建HTML文件
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1> Hello blog!</h1>
</body>
</html>
修改view.py文件
from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return render(request,'index.html')
解决Templates 冲突问题
在APP的Templates目录下创建以APP名为名称的目录
将HTML文件放入新创建的目录下
六、Models
通常,一个Model对应数据库的一张数据表
Djanjo中的Models 以类的形式表现
步骤:
在应用根目录下创建models.py 并引入models模块
创建类,继承models.Model 该类即是一张数据表
在类中创建字段
1、创建字段:(标题、内容两个字段)
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=32, default='Title')
content = models.TextField(null=True)
2、生成数据表
命令行执行:
python manage.py makemigrations blog
python manage.py migrate
创建完成后,会生成 db.sqlite3
可以用SQLite Expert Personal 查看数据库文件
3、页面呈现数据
后端步骤:修改view.py
from __future__ import unicode_literals
from django.shortcuts import render
import models
def index(request):
article = models.Article.objects.get(pk=1)
return render(request, 'blog/index.html', {'article': article})
前端步骤:修改index.html
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1> {{article.title}}</h1>
<h1> {{article.content}}</h1>
</body>
</html>
七、创建超级用户,将应用加入admin后台
python manage.py createsuperuser
访问地址:http://127.0.0.1:8000/admin
将后台修改为中文界面:
修改setting.py 中LANGUAGE_CODE = ‘zh_Hans’
配置应用:
在应用下admin.py 中引入自身的models模块
from __future__ import unicode_literals
from django.contrib import admin
from models import Article
admin.site.register(Article)
修改数据默认显示的标题:
在Article类下添加一个方法
根据Python版本的不同 Python3使用__str__(self) Python2使用__unicode__(self)
from __future__ import unicode_literals
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=32, default='Title')
content = models.TextField(null=True)
def __unicode__(self):
return self.title