long-term support (LTS):
某些功能版本将被指定为长期支持(LTS)版本。 这些版本将在保证的时间段(通常为三年)内得到应用安全和数据丢失修复的支持。
推荐django版本选择是LTS版本的1.11版本。
两种方式:
1,通过cmd命令行安装
pip install Django==1.11.13 (或 py -3 -m pip install Django==1.11.13)
2,通过pycharm下载安装
file --> settings --> project
1,创建新项目:
方式一:
需先把E:\python3\Scripts 先添加进系统的环境变量中(因为下面要用到的django-admin可执行文件在此目录下)
先切入到某个你要用来存放新项目的目录,然后执行django-admin startproject mysite命令
E:\python\djfile>django-admin startproject mysite
方式二:使用pycharm创建
file -->new project -->Django
2,创建一个django新项目后生成如下文件结构:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
这些目录和文件的用处是:
1,最外层的:file: mysite/ 根目录只是你项目的容器, Django 不关心它的名字,你可以将它重命名为任何你喜欢的名字。
2,manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。
3,里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls).
4,mysite/__init__.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。
5,mysite/settings.py:Django 项目的配置文件。
6,mysite/urls.py:Django 项目的 URL 声明,就像你网站的“目录”。
7,mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
3,相关配置设置
#mysite/settings.py
# 静态文件目录,在HTML文件中引入外部静态文件时需以此目录名开头
STATIC_URL = '/static/'
# 下面的设置很重要,名字必须是 STATICFILES_DIRS
# 设置静态文件真正存放的目录
STATICFILES_DIRS = [
os.path.join(BASE_DIR,"static"),
]
在根目录下创建static文件夹来存放静态文件,创建templates文件夹来存放HTML文件(注:每个应用的HTML文件最好放在该应用下的templates文件夹内)
1,创建新应用
方式一:在cmd中创建新应用,需先切入到该应用要存放的目录
E:\python\djfile\mysite>python3 manage.py startapp polls
方式二:在pycharm的Terminal中创建,其实本质和方式一是一样的,只是更加方便了
项目和应用有啥区别?
应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者简单的投票程序。
项目则是一个网站使用的配置和应用的集合。
项目可以包含很多个应用。应用可以被很多个项目使用。
2,相关配置
#mysite/settings.py
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'testapp.apps.TestappConfig',
# 有以下两种配置方式
# 'sms',
'sms.apps.SmsConfig', # 推荐使用这种方式配置
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', # POST提交表单要在表单中使用{% csrf_token %}
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
关于html文件,可以统一放在根目录下的templates文件夹中,这样每个html文件的url配置如下:
from django.conf.urls import url
from django.contrib import admin
from testapp import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', views.login),
url(r'^publisher_list/',views.publisher_list),
url(r'^add_publisher/',views.add_publisher),
]
html文件也可放在在应用下面的templates文件夹内,其url配置如下:(推荐使用这种方式)
# mysite/urls.py
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^sms/', include('sms.urls')),
url(r'^polls/', include('polls.urls')),
]
# 项目sms/urls.py
from django.conf.urls import url
from . import views
app_name = 'sms'
urlpatterns = [
url(r'^class_list/',views.class_list),
url(r'^add_class/', views.add_class),
]
在views.py中写业务逻辑代码:
# sms/views.py
from django.shortcuts import render, redirect
from . import models
# Create your views here.
def class_list(request):
classes = models.Class.objects.all()
return render(request, 'sms/class_list.html', {'class_list': classes})
步骤一:需要先创建一个数据库
步骤二:
#mysite/settings.py
# 首先需要把django 默认的数据库配置注释掉
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }
# 在下面为django项目配置MySQL数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'django_learn', # 这里填你手动创建的数据库的名字
'HOST':'127.0.0.1',
'PORT':3306,
'USER':'root',
'PASSWORD':'321'
}
}
# mysite/__init__.py
import pymysql
pymysql.install_as_MySQLdb()
步骤三:
在应用下面的models.py内创建需要用到的数据模型:
from django.db import models
# Create your models here.
class Publisher(models.Model):
id = models.AutoField(primary_key=True) # 这行代码可以省略
name = models.CharField(max_length=32)
def __str__(self):
return self.name
class Book(models.Model):
name = models.CharField(max_length=32)
publisher = models.ForeignKey(Publisher)
def __str__(self):
return self.name
步骤四:
连接数据库:
步骤五:
执行以下两条命令:
通过运行 makemigrations 命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次 迁移。
迁移是 Django 对于模型定义(也就是你的数据库结构)的变化的储存形式;它们其实也只是一些你磁盘上的文件。如果你想的话,你可以阅读一下你模型的迁移数据,它被储存在 polls/migrations/0001_initial.py 里Django 的迁移代码是由你的模型文件自动生成的,它本质上只是个历史记录,Django 可以用它来进行数据库的滚动更新,通过这种方式使其能够和当前的模型匹配
python manage.py migrate
这个 migrate 命令检查 INSTALLED_APPS 设置,为其中的每个应用创建需要的数据表,至于具体会创建什么,这取决于你的 mysite/settings.py 设置文件和每个应用的数据库迁移文件
Django 有一个自动执行数据库迁移并同步管理你的数据库结构的命令 - 这个命令是 migrate
这个 migrate 命令选中所有还没有执行过的迁移(Django 通过在数据库中创建一个特殊的表 django_migrations 来跟踪执行过哪些迁移)并应用在数据库上 - 也就是将你对模型的更改同步到数据库结构上。
改变模型需要这三步:
①编辑 models.py 文件,改变模型。
②运行 python manage.py makemigrations 为模型的改变生成迁移文件。
③运行 python manage.py migrate 来应用数据库迁移。
步骤六:
在pycharm提供的图形化界面进行表内数据的增删查改