djangoadmin startapp app02
INSTALLED_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 migrate
pip install pymysql -i源
import pymysql
http://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 migrate
E:\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