from django.db import models
# Create your models here.
class BookInfo(models.Model):
title=models.CharField(max_length=20)
pub_date=models.DateField()
## 返回信息能够查看
def __str__(self):
return self.title
# return self.title.encode(‘utf-8‘)
class HeroInfo(models.Model):
name=models.CharField(max_length=20)
content=models.CharField(max_length=100)
gender=models.BooleanField(default=True)
book=models.ForeignKey(BookInfo,on_delete=models.DO_NOTHING)
# def __str__(self):
# return self.name
生产迁移文件(名词:相当于sql语句文件):python manage.py makemigrations
执行迁移文件(创建数据库,生成表的操作):python manage.py migrate --- 会生成db.sqlite3数据库
使用shell操作:python manage.py shell
## 查询
python manage.py shell
from booktest.models import BookInfo
BookInfo.objects.all()
## 插入
b=BookInfo()
b.title=‘射雕英雄传‘
from datetime import date
b.pub_date=date(2020,7,12)
b.save()
BookInfo.objects.all()
b=BookInfo()
b.title=‘神雕侠侣‘
from datetime import date
b.pub_date=date(2020,7,12)
b.save()
BookInfo.objects.all()
## 修改
b=BookInfo.objects.get(id=1)
b.title=‘神雕侠侣‘
b.save()
BookInfo.objects.all()
from booktest.models import HeroInfo
h=HeroInfo()
h.name=‘郭靖‘
h.gender=True
h.content=‘降龙十八掌‘
h.book=BookInfo.objects.get(id=1) ## 外键关系
h.save()
HeroInfo.objects.all()
python manage.py createsuperuser
Username (leave blank to use ‘zhangfd‘): admin
Email address: admin@163.com
Password:admin123456
Password (again):admin123456
Superuser created successfully.
LANGUAGE_CODE = ‘zh_Hans‘ ## zh_Hans --中文
TIME_ZONE = ‘Asia/Shanghai‘ ## Asia/Shanghai
from django.contrib import admin
from .models import *
# Register your models here.
## 定义后台显示信息
class BookInfoAdmin(admin.ModelAdmin):
list_display=[‘id‘,‘title‘,‘pub_data‘]
class HeroInfoAdmin(admin.ModelAdmin):
list_display=[‘id‘,‘name‘,‘content‘,‘gender‘,‘book‘]
## 对模型类进行注册后才能在后台查看到信息
admin.site.register(BookInfo,BookInfoAdmin)
admin.site.register(HeroInfo,HeroInfoAdmin)
from django.shortcuts import render
from django.http import HttpResponse ## 此处只用做功能介绍,实际中用render返回
# Create your views here.
## HTTPRequest
def index(request):
## HttpResponse
return HttpResponse("hello world") ## 此处只用做功能介绍,实际中用render返回
## 分析
#- def main():
# os.environ.setdefault(‘DJANGO_SETTINGS_MODULE‘, ‘test1.settings‘)
#- test1.settings:
# ROOT_URLCONF = ‘test1.urls‘
#- test1.urls:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘‘,include(‘booktest.urls‘)),
]
#- booktest.urls
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path(‘index/‘, views.index,name="index"),
]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ title }}</title>
</head>
<body>
<h1>hello world!</h1>
<hr>
{% for i in list %}
<h3>{{i}}</h3>
{% endfor %}
</body>
</html>
from django.shortcuts import render
# from django.http import HttpResponse
# Create your views here.
## HTTPRequest
def index(request):
context={‘title‘:‘django首页‘,‘list‘:range(10)} ## 多个字段需要传入html时,可以考虑字典
# return HttpResponse("hello world")
return render(request,‘booktest/index.html‘,context) ## context为传入HTML的参数
TEMPLATES = [
{
‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
‘DIRS‘: [os.path.join(BASE_DIR,‘templates‘)], ## templates模板路径拼接
...
}
<title>{{ title }}</title> ## 变量
{% for i in list %} ## 循环
<h3>{{i}}</h3>
{% endfor %}
#coding=utf-8
from django.shortcuts import render
from .models import *
# from django.http import HttpResponse
# Create your views here.
## HTTPRequest
def index(request):
#context={‘title‘:‘django首页‘,‘list‘:range(10)} ## 多个字段需要传入html时,可以考虑字典
# return HttpResponse("hello world")
list = BookInfo.objects.all()
context = {‘booklist‘:list}
return render(request,‘booktest/index2.html‘,context)
def detail(request,id): ## id 用来接收url.py中匹配到的数字
print(id)
list = BookInfo.objects.get(id=id).HeroInfo_set() ## 使用网页传过来的值,找到BookInfo中对应的一本书
## 反向获取引用bookInfo的所有HeroInfo信息
## HeroInfo中的book字段设置为外键,是BookInfo中title
context = {‘herolist‘:list}
return render(request,‘booktest/detail.html‘,context)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=, initial-scale=1.0">
<title>图书列表</title>
</head>
<body>
<ul>
{% for book in booklist %}
<li><a href="/{{ book.id }}">{{ book.title }}</a></li>
{% endfor %}
</ul>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>英雄信息</title>
</head>
<body>
<a href="/">首页</a>
<hr>
<ul>
{% for hero in herolist %}
<li>{{hero.name}}</li>
{%endfor%}
</ul>
</body>
</html>
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path(‘index/‘, views.index),
## 网页访问:http://127.0.0.1:8000/1,http://127.0.0.1:8000/2 ..
path(‘(\d+)‘,views.detail), ## ()提取数字:\d+ 从url页面获取的数字,在views中使用变量如id接收
]
原文:https://www.cnblogs.com/moox/p/13290222.html