一、准备阶段
- 查看版本
python -m django --version - 创建项目
django-admin startproject mysite
以上步骤在Pychram中均可省略 - 简单测试
python manage.py runserver
这里可以更改自己想要的ip及端口
如:
python manage.py runserver 8080 - 创建app
python manage.py startapp polls - 在settings中加入此app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'MMS', # 后面加入的
]
- 在新建的app中编写第一个用于测试的views
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
- 在主目录的urls.py下添加我们的views的url
from django.contrib import admin
from django.urls import path
from MMS import views as MMS_views
urlpatterns = [
path('admin/', admin.site.urls),
path('',MMS_views.index), # news
]
二、开始加入真正的功能
- 在settings中更换mysql的信息
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'csvt',
'USER':'root',
'PASSWORD':'123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
- 添加驱动
django 连接mysql默认驱动是MySQLdb,MySQLdb没有支持python3的版本,解决办法如下:
- 使用pymysql替换MySQLdb
在django 项目配置文件同目录下的 --init__.py文件中加入以下代码:
import pymysql
pymysql.install_as_MySQLdb()
- 使用mysqlclient代替MySQLdb
pip install mysqlclient
- 默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。请执行以下命令:
python manage.py migrate - 创建数据库
在app的modles.py中创建
from django.db import models
# 下面创建了两张表
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
- 现在你的 Django 项目会包含 polls 应用。接着运行下面的命令:
python manage.py makemigrations polls
- 现在,再次运行 命令,在数据库里创建新定义的模型的数据表:
python3 manage.py migrate
以上3、4、5、6合起来如下:
# 初始化
python manage.py migrate
# 在modles中创建新的表
# 执行一下步骤
python manage.py makemigrations polls
# 将表加入如数据
python manage.py migrate
- 还要学习一下python方便的API
现在让我们进入交互式 Python 命令行,尝试一下 Django 为你创建的各种 API。通过以下命令打开 Python 命令行:
python manage.py shell
我们使用这个命令而不是简单的使用 "Python" 是因为 manage.py
会设置 DJANGO_SETTINGS_MODULE
环境变量,这个变量会让 Django 根据 mysite/settings.py
文件来设置 Python 包的导入路径。
from polls.models import Choice, Question
# Import the model classes we just wrote.
# No questions are in the system yet.
>>> Question.objects.all()
<QuerySet []>
>>> from django.utils import timezone
# 为表添加元素
>>> q = Question(question_text="What's new?", pub_date=timezone.now())
# 保存
>>> q.save()
# Now it has an ID.
>>> q.id
1
# Access model field values via Python attributes.
>>> q.question_text
"What's new?"
>>> q.pub_date
datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)
# Change values by changing the attributes, then calling save().
>>> q.question_text = "What's up?"
>>> q.save()
# objects.all() displays all the questions in the database.
>>> Question.objects.all()
<QuerySet [<Question: Question object (1)>]>
polls/models.py
class Question(models.Model):
# ...
def __str__(self):
return self.question_text
class Choice(models.Model):
# ...
def __str__(self):
return self.choice_text
from django.db import models
from django.utils import timezone
class Question(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)