VS2019 开发Django(五)------createsuperuser
上篇我们已经把LazyOrders中用到的C#的实体转成了Django中的Entity,并且已经迁移数据库成功,那么,今天继续介绍Django中内置的数据库操作Api以及新建超级用户。
1)初试API,打开Django shell
输入如下命令:然后查看数据库中的数据,我们可以看到What's new?成功保存到了数据库中,更多的操作可以直接参考官方文档:
#导入models
>>> from hello.models import Choice,Question
#从数据库查询所有的Question >>> Question.objects.all()
#没有查到数据 <QuerySet []>
#导入时区模块 >>> from django.utils import timezone
#创建了一个名为q的Question对象 >>> q = Question(question_text="What's new?",pub_date=timezone.now())
#将q对象保存到数据库中 >>> q.save()
根据主键查询:
>>> from hello.models import Question >>> q = Question.objects.get(pk=2) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "D:\项目\local\DjangoLazyOrders\env\lib\site-packages\django\db\models\manager.py", line 82, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "D:\项目\local\DjangoLazyOrders\env\lib\site-packages\django\db\models\query.py", line 408, in get self.model._meta.object_name hello.models.Question.DoesNotExist: Question matching query does not exist. >>> q = Question.objects.get(pk=1) >>> q.id 1 >>> q.was_published_recently() False >>>
根据其他条件查询:
>>> questions = Question.objects.filter(question_text__startswith='What') >>> questions <QuerySet [<Question: What's new?>, <Question: What's your problem?>]> >>> questions[1] <Question: What's your problem?> >>> questions[1].question_text "What's your problem?" >>>
执行原生Sql:注意百分号要转义,%%
>>> from hello.models import Question >>> query = Question.objects.raw("select * from hello_question where question_text like '%%python%%'") >>> for q in query: ... print(q) ... python从入门到放弃 >>>
2)创建超级用户
输入用户名,邮箱,密码即可,创建完成后,点运行,然后在跳转的地址http://localhost:8090/后面追加admin回车,就会跳转到Django的管理登录页,输入我们刚刚创建的用户名和密码,即可登录
登录进去之后,我们会看到认证和授权相关的内容,这是框架提供的,但是,我们自己添加的Hello应用并没有展示出来?
3)向管理页中加入我们的hello应用
找到我们hello应用下面的admin.py文件,向里边添加内容如下:
from django.contrib import admin # Register your models here. from .models import Question,Choice,Category,Menu,Carts,Orders admin.site.register(Question) admin.site.register(Choice) admin.site.register(Category) admin.site.register(Menu) admin.site.register(Carts) admin.site.register(Orders)
再次启动,重新访问admin页面,我们的hello应用中添加的实体都展示出来了,对比发现,除了Category是中文类别之外,其他都是英文的,对比源代码就知道Category添加了Meta类,其中verbose_name_plural 赋值了中文‘类别’,所以管理页显示为中文,那么,如果字段要显示中文,可以设置verbose_name的值为中文
#类别表 class Category(models.Model): category_id = models.AutoField(primary_key=True,verbose_name='类别ID') category_name = models.CharField(max_length=30,verbose_name='类别名') def __str__(self): return self.category_name class Meta: verbose_name_plural = '类别' #菜单表 class Menu(models.Model): menu_id = models.AutoField(primary_key=True,verbose_name='菜单ID') category = models.ForeignKey(Category,on_delete=models.CASCADE) menu_name = models.CharField(max_length=50,verbose_name='菜单名') img_path = models.CharField(max_length=100,verbose_name='图片路径',default='') price = models.DecimalField(max_digits=5, decimal_places=2)
4)总结
- 该篇主要介绍了Django中的ORM怎么增删查改数据库
- 创建了超级用户,并完成了配置,可以对我们新增加的Model增删查改
到这一步,后台管理基本就可以了,增删查改都有了,还有一个图片上传需要完善,待续...
牛人之所以是牛人,是因为你现在在踩的坑,他曾经都已经踩过了。