djangoadmin startapp app02INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
    'app02'
]from django.conf.urls import url
from app02 import views
urlpatterns = [
    url(r'^index/',views.index)
]def index(request):
    return HttpResponse('app02 index')
from django.conf.urls import url,include
from django.contrib import admin
#Include语法,来将单独的页面包含到当前模板页面中,路由转发
url(r'^app02/',include('app02.urls'))from django.db import models
class Student(models.Model):#继承Django的models
    s_name = models.CharField(max_length=16)
    s_age = models.IntegerField(default=1) #default=1默认值
#生成迁移文件
E:\python_data\py27\bookmanager>python manage.py makemigrations
Migrations for 'app01':
  app01\migrations\0003_auto_20191121_1645.py
    - Create model Student
    - Delete model test
    
#迁移
E:\python_data\py27\bookmanager>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, app01, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  ....from django.conf.urls import url
from app01 import views
urlpatterns = [
    url(r'^index/',views.index),
    url(r'addstudent/',views.add_student)
]from django.shortcuts import render,HttpResponse,redirect
from app01 import models
from app01.models import Student
def add_student(request):
    student = Student()
    student.s_name='jrrey'
    student.save()
    return HttpResponse('Add successfully')到数据库刷新查看,可以看见学生已经添加
def add_student(request):
    student = Student()
    student.s_name= 'jerry%d' % random.randrange(100)
    student.save()
    return HttpResponse('add successfully %s' % student.s_name)访问 http://127.0.0.1:8000/app01/addstudent/
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student_list</title>
</head>
<body>
<h2>hello</h2>
<h3>{{ hobby }}</h3>
</body>
</html>from django.conf.urls import url
from django.contrib import admin
from  app01 import  views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #出版社的展示
    # url(r'^publishare_list/',views.publishare_list)
    # url()
    url(r'^login/',views.login),
    url(r'index/',views.index),
    url(r'addstudent/',views.add_student),
    url(r'getstudent/',views.get_student),
]def get_student(request):
    students = Student.objects.all() #orm为提供学生操作的一个入口
    for student in students:
        print(student.s_name)
    return HttpResponse('student list')def get_student(request):
    students = Student.objects.all() #orm为提供学生操作的一个入口
    for student in students:
        print(student.s_name)
        context = {
            "hobby":"play games",
            "eat":"meat" #如果没在HTML中定义就不会刷出来
        } #往模板中传的数据,是个字典
    return render(request,'student_list.html',context=context)<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student_list</title>
</head>
<body>
<h2>hello</h2>
<h3>{{ hobby }}</h3>
<h3>{{ eat }}</h3>
</body>
</html>def get_student(request):
    students = Student.objects.all() #orm为提供学生操作的一个入口
    for student in students:
        print(student.s_name)
    context = {
        "hobby":"play games",
        "eat":"meat", #如果没在HTML中定义就不会刷出来
        "students":students
    } #往模板中传的数据,是个字典
    return render(request,'student_list.html',context=context)<h1>student list</h1>
<hr>
<ul>
    {% for student in students %}
        <li>{{ student.s_name }}</li>
    {% endfor %}
</ul>
</body>
</html>urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'addstudent/',views.add_student),
    url(r'getstudent/',views.get_student),
    url(r'updatestudent/',views.update_student),
]def update_student(request):
    student = Student.objects.get(pk=2) #get获取单个对象,跟个条件pk等于2,pk=2 就是primary主键=2
    student.s_name = 'jack'
    student.save()
    return HttpResponse('student update successfully')def delete_student(request):
    student = Student.objects.get(pk=3)
    student.delete()
    return HttpResponse('student delete successfully')python manage.py migratepip install pymysql -i源import pymysqlhttp://127.0.0.1:8000/app01/addstudent/from django.shortcuts import render,redirect,HttpResponse
from django.template import loader
def three_index(request):
    threeindex = loader.get_template('three.html') #加载
    ret = threeindex.render() #渲染成字符串
    print(ret)
    return HttpResponse(ret)
    def three_index(request):
    threeindex = loader.get_template('three.html')
    context = {
        "student_name":"Sunck",
    }
    ret = threeindex.render(context=context)
    print(ret)
    return HttpResponse(ret)E:\py27\Django_project\bookmanager>python manage.py shell
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from app01.models import Student
>>> students = Student.objects.all()
>>> for student in students:
... print (student.s_name)
##创建学生
>>> student = Student()
>>> student.s_name = 'Sunck'
>>> student.save()class Grade(models.Model):
    g_name = models.CharField(max_length=32) 
    
class Student(models.Model):
    s_name = models.CharField(max_length=16)
    s_grade = models.ForeignKey(Grade,on_delete=models.CASCADE,)  #外键到班级
python manage.py makemigrations
python manage.py migrateE:\py27\Django_project\bookmanager>python manage.py makemigrations app02
Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "E:\软件\python3\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "E:\软件\python3\lib\site-packages\django\core\management\__init__.py", line 357, in execute
    django.setup()
  File "E:\软件\python3\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "E:\软件\python3\lib\site-packages\django\apps\registry.py", line 114, in populate
    app_config.import_models()
  File "E:\软件\python3\lib\site-packages\django\apps\config.py", line 211, in import_models
    self.models_module = import_module(models_module_name)
  File "E:\软件\python3\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "E:\py27\Django_project\bookmanager\app02\models.py", line 7, in <module>
    class Student(models.Model):
  File "E:\py27\Django_project\bookmanager\app02\models.py", line 9, in Student
    s_grade = models.ForeignKey(Grade)
TypeError: __init__() missing 1 required positional argument: 'on_delete'
原因:
在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:
TypeError: __init__() missing 1 required positional argument: 'on_delete'+----+-------------+
| id | g_name      |
+----+-------------+
|  1 | GP-python-1 |
|  2 | python1887  |
|  3 | python1888  |
|  4 | python1809  |
+----+-------------++----+--------+------------+
| id | s_name | s_grade_id |
+----+--------+------------+
|  1 | Sunck  |          1 |
|  2 | Tom    |          1 |
|  3 | Jack   |          1 |
|  4 | Rose   |          2 |
|  5 | marry  |          3 |
+----+--------+------------+from django.conf.urls import url,include
from django.contrib import admin
from app01 import views
from app02 import views
urlpatterns = [
    url('admin/', admin.site.urls),
    # url('login/',views.login),
    url('app01/',include('app01.urls')),
    url('app02/',include('app02.urls'))
]
from django.conf.urls import url
from app02 import views
urlpatterns = [
  
    # url(r'threeindex/',views.three_index),
    url(r'getgrade/',views.get_grate),
    url(r'getstudents/',views.get_students),
]from django.shortcuts import render,HttpResponse,redirect
from app02.models import Student
from  app02 import models
from app02.models import Grade
# Create your views here.
def get_grate(request):
    student = Student.objects.get(pk=1)
    grate = student.s_grade
    return HttpResponse("Grate %s"%grate.g_name)
# 查询时先查的student,通过student调出grate,这就是简单的数据级联
def get_students(request):
    grate = Grade.objects.get(pk=1)
    students = grate.student_set.all()
    context={
        "students":students
    }
    return render(request,'student_app02_list.html',context=context)<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>student_list</title>
</head>
<body>
<h3>student list</h3>
<ul>
    {% for student in students %}
        <li>{{ student.s_name }}</li>
    {% endfor %}
</ul>
</body>
</html>原文:https://www.cnblogs.com/yihutu/p/11937274.html