VS2019 開發Django(五)------createsuperuser


導航:VS2019開發Django系列

 

上篇我們已經把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增刪查改

到這一步,后台管理基本就可以了,增刪查改都有了,還有一個圖片上傳需要完善,待續...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM