day13 django基础一

1.怎么创建django工程,新建djorgo工程后需要改哪些初始化配置
安装django
pip install django==2.1.7
创建django项目命令:django-admin startproject sky cd sky

2.如何在django工程星面新建app.新建app后需要做什么初始操作?
创建子项目(app):python manage.py startapp user
sky/sky/setting.py 配置文件

ALLOWED_HOSTS = []#配置允许哪些ip访问的
ALLOWED_HOSTS = []#为空,只允许本机访问
ALLOWED_HOSTS = ['*'] #配置在服务器上时,设置为*,允许所有ip访问
ALLOWED_HOSTS = ['192.168.1.289']#允许设置的IP访问(限制哪些IP访问)

LANGUAGE_CODE = 'zh-Hans' #语言,改成zh-Hans中文
TIME_ZONE = 'Asia/Shanghai' #时区 ,改成Asia/Shanghai
USE_TZ = False #改为False,不使用标准时间,TIME_ZONE = 'Asia/Shanghai'才会生效


3.如何启动djcng项目,指定端口号?
运行django项目,获取django的启动页面(ctrl+c退出)
python manage.py runserver
默认 http://127.0.0.1:8000/
指定端口号
python manage.py runserver 8999 指定端口运行(默认8000,如果被占用,可以指定其他端口号)
python manage.py runserver 0.0.0.0:8999
其他人可以通过你的IP访问到(只要能ping通你的IP)

4、访问http://xxxx/index,返回hello django,需要怎么开发
views.py
from django.shortcuts import HttpResponse
def index(request):
return HttpResponse("hello django!")
url.py
urlpatterns = [
path('index', views.index),
]
5.怎么定义orm,生成表结构、同步到数据库
django创建表
复制db.sqlite3的地址,copy path
打开navicat Premium - 连接 - SQLLite 数据库文件:E:\gw\python\test1\day13\sky\db.sqlite3(上一步复制的地址)
右键单击 db -打开连接 右键单击 admin -打开数据库

python manage.py makemigrations [app_name] #生成表结构 创建所有子项目的表结构
python manage.py makemigrations user #只是生成子项目user下的表结构user\migrations\0001_initial.py
(执行 pycharm-tools- run manage.py Task 可以直接执行 makemigrations user)
python manage.py migrate #同步到数据库
makemigrations #改名、修改了表结构,需要运行一下makemigrations,然后再 migrate,同步到数据库


6. views里面怎么样设置才能找到html文件
return render(request,'index.html',{})

7. django的静态文件怎么设置
前、后端不分离的开发
1、在sky下面建立templates文件夹(用来放html模板的),把模板中的html文件复制到templates文件夹下面,把static文件夹赋值到sky下
2、在views.py 下写代码

静态文件设置(前后端不分离)
在settings.py 文件的末尾设置静态文件的地址
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]
设置后重启sky
可能多个子项目下面都有static,所以这里用列表,可以写多个地址


8.使用django自带的admin需要怎么操作?
创建后台管理的admin用户
python manage.py createsuperuser #创建后台管理的admin用户.根据提示设置用户名,密码
执行tools - Run manage.py Task...#只要是执行manage.py都是可以通过tools - Run manage.py Task...来执行
命令行输入createsuperuser
http://127.0.0.1:8000/admin 访问 用户名admin 密码123456

9. django admin怎么配置出来显示多个字段,按照某些字段筛选
class CategoryAdmin(admin.ModelAdmin):#在后台文章分类表显示数据的时候增加一些字段
list_display = ['id','name','create_time','update_time']#显示多个字段
list_filter = ['name']#根据列表内容来筛选,可以是多个字段
search_fields = ['name','id']#根据name来搜索,可以是多个字段
admin.site.register(models.Category,CategoryAdmin)

10. model常用的查询操作有哪些? model怎么设置默认排序
def category_view(request): #基础查询
# c = models.Category.objects.all() #查询表里的所有的数据
# print(c) #返回结果:<QuerySet [<Category: Java>, <Category: Unix>, <Category: python>]>
# for i in c: #获取表中字段
# print(i.name)
# print(i.create_time)
# print(i.update_time)
#
# j = models.Category.objects.get(name="Java") #查询表里的单条数据,用.get方法,必须保证返回的数据是一条,如果有多条会报错
# print(j.name)
#
# f = models.Category.objects.filter(name='Java',id=3) #查询条件或结果可以为多条数据
# print(f)
#
# result=models.Category.objects.filter(name="mysql").exists() #是否存在,name="mysql"是否存在
# print(result)
#
# result=models.Category.objects.filter(name="python").count() #返回多少条
# print(result)

#通过外键反向查询
# c = models.Category.objects.get(id = 3) #通过文章中归属于哪个分类id,查询出某个分类下面有多少篇文章
# print(c.article_set.all()) #分类下面的所有有的文章,models.Article.objects.all()
# print(c.article_set.count()) #分类下有多少篇文章
# print(c.article_set.filter())

11. django怎么获取到请求方式、请求参数、请求头等等
django里面request方法的属性
def get_sign(request):#django 请求对象里面的一些属性
print(dir(request)) #查看request有多少属性
# print(request.method)#请求方式
# print(request.body) # 请求体
# print(request.META) # 请求头
# print(request.GET) # url里面的参数都在GET url?a=1&b=2
# print(request.POST) # k-v,k1-v1
# print(request.FILES) # 文件
# print(request.COOKIES) # cookies

12.怎么通过外键反向查询?
通过外键反向查询
# c = models.Category.objects.get(id = 3) #通过文章中归属于哪个分类id,查询出某个分类下面有多少篇文章

13. django的template怎么循环,怎么取views返回的数据


14. django怎么获取到url路径里面传的参数?例/category/1
views.py
def category(request):
# 方式1:http://127.0.0.1:8000/category?id=1
# articles=models.Article.objects.filter(category_id=request.GET.get('id'))
# return render(request,'category.html',{'articles':articles})
def category(request,id):
# 获取category_id
# 方式2:http://127.0.0.1:8000/category/1
articles=models.Article.objects.filter(category_id=id) #返回 [<Article: 文章标题-java-2>, <Article: 文章标题-java-1>]
return render(request,'category.html',{'articles':articles})
urls.py
urlpatterns = [
path('category', views.category),
path('category/<int:id>', views.category),
]

15.外键被删除的时候,分别有哪几种处理方式?
category = models.ForeignKey(Category,db_constraint=True,on_delete=models.PROTECT,verbose_name='分类') #外键
# 外键,通过这个键与另外一张表发生关联,一张表和另外一张表之间的关系是一对多的关系,使用外键。Category,映射的是哪个类,就把那个类的名称写在这里,同时也继承这个类的属性。db_constraint=True不会真的建立外键关联
#on_delete的几种方法(当分类被删除的时候,是否影响分类下的文章)
# models.DO_NOTHING #删除分类,分类下的文章不删除
# models.CASCADE #会删除
# models.SET_DEFAULT #设置一个默认值,例如1
# models.SET_NULL #设置成空
# models.PROTECT #受保护的,如果还有在使用的,不能让你删除
# models.SET #自定义模式,自己指定
posted @ 2020-11-28 16:16  xianfeng1224  阅读(100)  评论(0)    收藏  举报