说明:本文环境windows+pycharm专业版html
1.HelloDjandopython
环境搭建:为django项目建立本身独立的python虚拟环境,并在pycharm中选择解释器为刚刚建立的python虚拟环境mysql
进入到要建立django项目的目录,执行以下命令sql
django-admin startproject HelloDjango #建立项目
python manage.py startapp App #建立应用,注意建立后先把该应用注册到settings.py中,以避免后续忘记
python manage.py runserver #启动服务
浏览器访问:http://127.0.0.1:8000/ 可看到django的欢迎界面shell
2.MTV数据库
模板配置:须要在项目目录中建立templates文件夹并标记;须要在settings中进行注册django
路由优化配置:拆分为多个app;继承拆分路由器windows
例子1:浏览器
浏览器访问:http://127.0.0.1:8000/hello/app
例子2:
项目根目录下建立文件夹templates(若是想让代码自动提示,须要右击templates Mark Directory as Templates)
访问: http://127.0.0.1:8000/home/ 可看到以下界面
3.model的介绍与简单使用
Object Relational Mapping 对象关系映射
迁移的概念:就是将模型映射到数据库的过程
编写models.py后,执行以下命令:
python manage.py makemigrations #生成迁移
python manage.py migrate #执行迁移
如何使用mysql数据库?(django默认的是sqlite3)
1.修改setting.py文件 2.安装pymysql ,pip install pymysql(若是原来已安装的话不须要安装) 3.在 项目根目录/HelloDjango/__init__.py增长以下内容: import pymysql pymysql.install_as_MySQLdb()
1.首先编写应用下的models.py from django.db import models # Create your models here. class Student(models.Model): s_name = models.CharField(max_length=16) s_age = models.IntegerField(default=1) 2.应用下新建urls.py并写入以下代码(注意鼠标定位到函数上就能够使用快捷键alt+enter进行快速导包与建立view对应的函数) from django.conf.urls import url from Two import views urlpatterns = [ url(r'^index/',views.index), url(r'^addstudent/',views.add_student), url(r'^getstudents/',views.get_students), url(r'^updatestudent/',views.update_student), url(r'^deletestudent/',views.delete_student), ] 3.项目下的urls.py增长以下 url(r'^two/',include('Two.urls')), 4.编写应用下的views.py import random from django.http import HttpResponse from django.shortcuts import render # Create your views here. from Two.models import Student def index(request): return HttpResponse("Two index") def add_student(request): student = Student() student.s_name = 'Tom%d'%random.randrange(100) student.save() return HttpResponse("Add Success %s"%student.s_name) def get_students(request): students = Student.objects.all() for student in students: print(student.s_name) context = { "hobby":"play", "students":students } return render(request,"student_list.html",context=context) def update_student(request): student = Student.objects.get(pk= 2) student.s_name = 'pomelo' student.save() return HttpResponse("student update success") def delete_student(request): student = Student.objects.get(pk=3) student.delete() return HttpResponse("delete student success") 5.若是4中有些使用到了html,则须要在项目根目录下的templates下建立对应的html文件 如:student_list.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>StudentList</title> </head> <body> <h2>Ubuntu</h2> <h3>{{ hobby }}</h3> <h1>Student List</h1> <hr> <ul> {% for student in students %} <li>{{ student.s_name }}</li> {% endfor %} </ul> </body> </html>
render的原理,了解便可:
from django.http import HttpResponse from django.shortcuts import render # 实际上是个快捷键 # Create your views here. from django.template import loader def index(request): three_index = loader.get_template('three_index.html') # 获取模板 result = three_index.render() # 渲染 print(result) return HttpResponse(result)
4.model-数据常规操做、级联数据
python manage.py shell:能够用来调试数据
D:\django_project\day01\HelloDjango>python manage.py shell Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from Two.models import Student >>> students = Student.objects.all() >>> students <QuerySet [<Student: Student object (1)>, <Student: Student object (2)>, <Student: Student object (3)>, <Student: Student object (4)>, <Student: Student object (5)>, <Student: Student ob ject (6)>, <Student: Student object (7)>]> >>> for student in students: ... print(student.s_name) ... Tom8 Tom97 Tom2 Tom45 Tom16 Tom30 Tom28
表关系:
1:1 给外键加上惟一约束
1:M 外键
M:N 额外建立一张表,记录另外两张表间的关系