🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[toc] # Django实践 [Django](https://www.djangoproject.com/)是一个高级Python Web框架,鼓励快速开发和整洁适用的设计,它由经验丰富的开发人员构建,他们处理了Web开发的许多麻烦,所以你可以专注于自己的APP,而无需重复的造轮子。它是免费开源的。 ## 开发环境的搭建 for django@python 操作系统为widows 1. 下载安装python,设置环境变量(添加python安装目录之环境变量PATH)。在命令行输入``python --version ``,回应相应的版本号``python 3.7.2``,表明python安装成功; 2. 下载安装python集成开发环境[PyCharm](https://www.jetbrains.com/pycharm/),使用PyCharm Community Edition,免费的。 新建项目,PyCharm会为每个项目创建一个隔离的Python运行环境(virtualenv,venv),在本项目的venv中安装模块(如django)不会影响到其它项目。 ## django应用开发流程之准备工作 1. 新建项目MyDjangoProject,并未该项目新建了venv(virtualenv,虚拟环境); 2. 安装Django模块(在venv虚拟环境下),打开Terminal,输入``pip install django``即可安装; ``` (venv) D:\MyPython\MyDjangoProject>pip install django Collecting django ... Successfully installed django-2.1.7 pytz-2018.9 ... ``` 3. 新建Django项目,mysite ``` (venv) D:\MyPython\MyDjangoProject>django-admin startproject mysite . ``` > 注意新建项目命令的点表示在当前目录下创建该项目; 项目自动创建文件manage.py,该文件将接管该项目的管理工作,查看其支持的命令``python manage.py --help `` 4. 迁移数据库``python manage.py migrate`` 5. 启动web服务器,``python manage.py runserver``,在浏览器输入http://127.0.0.1:8000/,即可看到该项目的默认主页; 6. 新建应用程序myapp,``python manage.py startapp myapp`` 7. 添加应用myapp至文件settings.py ``` INSTALLED_APPS = [ 省略 # my apps 'myapp' ] ``` 8. 修改myapp,如这里定义模型,修改models.py,如下: ``` from django.db import models # Create your models here. class Topic(models.Model): '''用户学习的主题''' text = models.CharField(max_length=200) date_added = models.DateTimeField(auto_now_add=True) def __str__(self): '''返回模型的字符串表示''' return self.text ``` 9. 对myapp调用makemigrations,``python manage.py makemigrations myapp`` 10. 项目迁移,``python manage.py migrate`` > 每次修改应用myapp后,需要重复第9、10步 11. Django提供了后台管理网站(http://127.0.0.1:8000/admin/),在这里可以查看新定义的模型,不过初次登录时需要超级管理员身份。现在注册超级管理员,``python manage.py createsuperuser``,我注册的超级管理员为admin/admin; 12. 至此就可以登录django的后台管理网站,但是没有发现自己定义的模型Topic,这是因为自定义的models须自己注册,注册后再次登录后台管理软件即可看到myapp下的Topic; ## Django web应用开发 上节的准备工作做好之后,就可以正式进行web应用开发了。下面举例说明。 1. 定义模型Entry,在文件models: ``` class Entry(models.Model): '''某个主题的具体知识''' topic = models.ForeignKey(Topic, on_delete=models.CASCADE) text = models.TextField() dateadded = models.DateTimeField(auto_now_add=True) class Meta: verbose_name_plural = 'entries' def __str__(self): '''返回模型的字符串表示''' return self.text[:50] ``` 2. 迁移模型Entry,按上节第9、10步骤,生成了新的迁移文件0002_entry.py, ``` python manage.py makemigrations myapp python manage.py migrate ``` 3. 向管理网站注册Entry,在 文件admin.py ``` from django.contrib import admin # Register your models here. from myapp.models import Topic, Entry admin.site.register(Entry) ``` 4. 至此,超级用户可以在后台添加主题,添加文章并把文章关联到主题; ## 创建网页 创建网页分三步: * 定义URL * 编写视图 * 编写模板(网页) 下面举例说明网页的创建过程,该例需要创建主页、主题页面和文章页面。 1. 定义URL,编辑mysite/urls.py,新建并编辑myapp/urls.py,如下: mysite/urls.py ``` from django.contrib import admin from django.urls import path from django.conf.urls import include urlpatterns = [ path('admin/', admin.site.urls), path('', include(('myapp.urls', 'myapp'), namespace='myapp')), ] ``` myapp/urls.py ``` from django.conf.urls import url from . import views urlpatterns = [ # 主页 url('^$', views.index, name='index'), ] ``` 2. 编写视图 myapp/views.py ``` from django.shortcuts import render # Create your views here. def index(request): '''网站的主页''' return render(request, 'myapp/index.html') ``` 3. 编写模板(网页) 新建myapp/templates/myapp/index.html ``` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>这是myapp</title> </head> <body> <p>个人博客DEMO</p> <p> 用Django构建一个个人博客网站。 </p> </body> </html> ``` 4. 添加网页的搜索路径,否则找不到该网页 mysite/settings.py ``` TEMPLATES = [ { 'DIRS': [os.path.join(BASE_DIR,'myapp/templates/')], }, ] # 调试用,这里其输出为:myapp's base directory: D:\MyPython\MyDjangoProject print("myapp's base directory: ", BASE_DIR) ``` 至此输入 **127.0.0.1/8000** 就可以看到index这个网页了! ## 创建网页应用总结 Django有意将创建网页的过程分开,分别处理URL、视图和模板(网页),这样在项目很大时可以让参与者专注自己擅长的方面,例如,数据库专家可以专注于模型,程序员可以专注于视图代码,Web设计人员可以专注于模板。 ## 参考 * [Django与AJAX实现网页动态数据显示](https://blog.csdn.net/mildddd/article/details/79800721) # 部署django项目