安装
Pip 安装
pip install Django==2.1.7
源码安装
下载源码,进入源码的根目录执行 python setup.py install
注意:支持Python 3+ 和 支持Python 2.7以上
创建项目
django-admin startproject [项目名称]
项目的目录结构
manage.py命令
启动服务器
python manage.py runserver
开启服务器,默认地址为127.0.0.1:8000
python manage.py runserver 0.0.0.0:8000
指定0.0.0.0:8000,这个 IP 地址是告诉服务器去侦听任意的网络接口。
项目启动后,通过你的电脑IP地址就可以在手机上访问到你的项目了。
比如:我的电脑IP是 192.168.1.5 那么手机的访问地址就是:http://192.168.1.5:8000
注意:还必须在项目里找到setting.py ,在里面的的 ALLOWED_HOSTS里加上自己电脑的ip地址 ,不加ip地址的话,手机访问不到
wsgi.py
url.py
setting.py
_init_.py
Python中声明模块的文件
默认内容为空的
创建应用app
python manage.py startapp blog
注意:千万千万千万千万千万千万千万千万不要忘了新建app后,把他添加到setting.py的INSTALLED_APPS里
注意:千万千万千万千万千万千万千万千万不要忘了新建app后,把他添加到setting.py的INSTALLED_APPS里
注意:千万千万千万千万千万千万千万千万不要忘了新建app后,把他添加到setting.py的INSTALLED_APPS里
应用目录结构
admin.py:应用的后台管理配置
apps.py:该应用的一些配置
models.py:数据模块,使用ORM框架,类似于MVC框架的models(模型)
tests.py:自动化测试模块
views.py:执行响应代码所在的模块,代码逻辑处理的主要地点,项目中的大部分代码在这里编写
创建第一个响应
from django.shortcuts import render from django.http import HttpResponse # Create your views here. def first(request): return HttpResponse('Hello world!+++')
from django.contrib import admin from django.urls import path # 导包 因为要引用函数 import blog.views as bv urlpatterns = [ path('admin/', admin.site.urls),#这是admin的url地址,此处先忽略 path('first/', bv.first),#给first请求配置url ]
请求url为:http://127.0.0.1:8000/first/
配置url的第二种方式
以上方式是把所有的url都配置在了项目的根url里了,这样不便于维护,每个应用的url应该由该应用来维护
在应用下的url
from django.urls import path from . import views#记得导包,从当前目录导入views.py urlpatterns = [ # 第一个参数是地址,第二个参数是响应函数 path('first/', views.first), ]
根目录下的url
from django.contrib import admin from django.urls import path, include # 导包 因为要引用函数 import blog.views as bv urlpatterns = [ path('admin/', admin.site.urls),#这是admin的url地址,此处先忽略 # path('first/', bv.first),#不要使用这在根url里配置地址的方式 # 引入应用内的url方式来代替 path('', include(('blog.urls'), ]
这个请求的url为:http://127.0.0.1:8000/first/
第一个Template
第一步:
第二步:
第三步:
该页面的路径为:http://127.0.0.1:8000/second/
后台给页面传递参数
解决不同应用下的Template同名冲突
Models是什么
第一步:编写Models
from django.db import models #引入models模块
# Create your models here.
class Article(models.Model):#创建一个类继承自models.Model(对应于数据库一张表)
# 创建两个字段
title = models.CharField(max_length=32, default='Title')
content = models.TextField(null=True) # 可为空
第二步:执行命令完成迁移
python manage.py makemigrations
python manage.py migrate
执行完上面的代码,会生成移植文件
python manage.py makemigrations
python manage.py migrate
查看sql语句
python manage.py sqlmigrate [应用名] [文件id]
Admin
创建用户
python manage.py createsuperuser
入口:http://127.0.0.1:8000/admin/
在admin里查看数据库里的表
from django.contrib import admin
# Register your models here.
from .models import Article
# 把数据库的Article表注册到admin,这样在admin里才能看到这张表的数据
admin.site.register(Article)
增加一条数据看看
修改默认的名字
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) # 可为空
def __str__(self):
return self.title
把数据库里的数据显示到页面(template)
网表里插入数据,暂且通过admin里新增按钮来操作,
本例子主要说明,如何从数据库取数据,templates如何展示数据
第一步:在templates下新建html文件,注意:for循环写法
articles是后台传递过来的对象(列表)
第二步:在views.py里新建一个方法,处理这个页面的请求
#记得导入包models
from blog import models
# 新增一个方法index,处理展示blog列表的请求
def index(request):
articles = models.Article.objects.all()
return render(request, 'blog/index.html', {'articles': articles})
第三步:为这个页面的请求配置url
from django.urls import path
from . import views
urlpatterns = [
# 第一个参数是地址,第二个参数是响应函数
# 配置首页的url
path('index/', views.index),
]
ok,现在去请求吧 http://127.0.0.1:8000/index/