Django学习笔记
- 新建项目
django-admin startproject mysite
- 启动开发服务器
python manage.py runserver
可以指定端口
python manage.py runserver 8080
指定ip
python manage.py runserver 0.0.0.0:8000
如果ip写0.0.0.0,整个局域网就可以访问站点,而不止本机
- 新建应用(app)
python manage.py startapp app
- 在app目录新建一个urls.py,该app的路由路径写在这,再在项目的主urls文件加入urlpattern条码
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^app/', include('app.urls')),
url(r'^admin/', admin.site.urls),
]
include语法相当于多级路由,它把接收到的url地址去除前面的正则表达式,将剩下的字符串传递给下一级路由进行判断。
- 设置数据库,在mysite/settings.py配置,前提是电脑安装好mysql并安装了python的连接库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'root',
'USER': 'root',
'PASSWORD': '123456',
}
}
- 建立多对一的数据结构时,外键写在 ‘多’ 的一方
- 运行python manage.py makemigrations为改动创建迁移记录
- 运行python manage.py migrate,将操作同步到数据库
- 相比较直接输入“python”命令的方式进入Python环境,调用manage.py参数能将DJANGO_SETTINGS_MODULE环境变量导入,它将自动按照mysite/settings.py中的设置,就可以导入和调用任何你项目内的模块
python manage.py shell - Django推荐使用timezone.now()代替python内置的datetime.datetime.now()
- 创建管理员用户
python manage.py createsuperuser
- get_object_or_404()可以返回404错误,跟下面的代码实现一样效果
from django.http import Http404
from django.shortcuts import render
from .models import Question
# ...
def detail(request, question_id):
try:
question = Question.objects.get(pk=question_id)
except Question.DoesNotExist:
raise Http404("Question does not exist")
return render(request, 'polls/detail.html', {'question': question})