最近在学习Django框架,目的是了解前后端开发和运行中的交互细节。目前还是新手~
首先linux安装python3,一般都自带了
通过pip3安装虚拟环境,在虚拟环境下开发的好处是不同的项目可能需要不同版本的 python和依赖环境,都装到一起经常会导致问题,所以需要隔离环境:
sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper
创建虚拟环境:mkvirtualenv -p /usr/bin/python3 envname #envname为自定义的项目名称
如果提示找不到 mkvirtualenv 命令,需配置环境变量:
1.创建目录用来存放虚拟环境
mkdir $HOME/.virtualenvs
2.打开~/.bashrc文件,添加两行代码
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
#如果还是提示找不到mkvirtualenv命令,可能是virtualenvwrapper.sh文件路径不对,用which找出路径
#which virtualenvwrapper.sh
#用找出的路径替换source /usr/local/bin/virtualenvwrapper.sh中的路径
3.运行
source ~/.bashrc
虚拟环境常用命令:
查看当前有哪些虚拟环境:workon
进入虚拟环境: workon envname #envname为虚拟环境项目名称
退出虚拟环境:deactivate
删除虚拟环境:rmvirtualenv envname
安装django:pip3 install django
安装验证码库:pip3 install django-simple-captcha
pip3 install pytz
查看python安装库:pip3 list
这里举一个案例,例如创建一个博客项目blog,它的其中一个子应用为login登录模块。
创建虚拟环境:mkvirtualenv -p /usr/bin/python3 blog
进入虚拟环境:workon blog
创建一个django项目:django-admin startproject blog
此时项目目录结构如下:
设置允许任何ip访问以及语言和时区,修改blog/blog/settings.py:
# 对应的字段改为如下
ALLOWED_HOSTS = ['*']
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
如果在本地虚拟机开发需要查看防火墙是否开放了指定端口,比如本次使用8000端口;若是在云服务器上开发则需要在防火墙界面新增8000端口,否则访问不了,例如腾讯云:
启动django服务:python manage.py runserver 0.0.0.0:8000
第一次执行可能会报错,执行它提示的命令:python manage.py migrate
成功后再次启动django:python manage.py runserver 0.0.0.0:8000
在/blog目录下有一个manage.py文件,在这里创建一个应用:
python manage.py startapp login # login为应用名
目录结构如下:
在/blog/blog目录下修改settings.py注册login应用:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'login', # 注册登录应用
]
在/blog/blog目录下urls.py总路由增加login路径:
from django.contrib import admin
from django.urls import include, path # 别忘了这里导入 include
urlpatterns = [
path('admin/', admin.site.urls),
path('login/', include('login.urls')), # 增加login路由
]
在/blog/login目录下新增urls.py文件(这一步其实可以优化):
from django.urls import path
from . import views
# 增加view的index路由
urlpatterns = [
path('', views.index, name='index'),
]
在/blog/login目录下修改views.py:
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse(u"欢迎!")
此时浏览器打开http://127.0.0.1:8000/login/ 可以看到返回,由于没有写前端html显示比较简单。在本地开发就是127.0.0.1,在云上开发就是云的公网ip
创建一个超级管理员登录后台管理用户
创建默认用户模型:python manage.py makemigrations
创建默认的表:python manage.py migrate
创建超级管理员:python manage.py createsuperuser #会让你输入管理员账号密码
此时可在浏览器打开:http://127.0.0.1:8000/admin/ 登录超管,操作用户表
创建完成后数据库相关的大概目录如下:
其他数据库操作
重置整个数据库,删除所有数据库:python manage.py flush
重置应用程序数据库表,不删数据库:
1. python manage.py migrate login zero #login为app名字
2.删除app目录下的migrations文件夹
3.python manage.py makemigrations login
4.python manage.py migrate login
简单的django搭建和运行流程就是这样,后面再慢慢开发和研究~
学了几天目前做完简单的登录、注册、验证、退出的功能,大概是这样: