Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

Example Analysis of Django Design in Python

2025-03-25 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/01 Report--

This article mainly shows you the "sample analysis of Django design in Python", which is easy to understand and clear. I hope it can help you solve your doubts. Let the editor lead you to study and study the "sample analysis of Django design in Python".

Django design

User- user Management

Curser- course management

Organization- Institution and teacher Management

Data table generation and modification each APP models design users models design

Modify the models under the users directory

# _ * _ encoding:utf-8 _ * _ from _ future__ import unicode_literalsfrom datetime import datetimefrom django.db import modelsfrom django.contrib.auth.models import AbstractUser# Create your models here.class UserProfile (AbstractUser): # verbose_name: note # blank: whether it can be empty # nick_name = models.CharField (max_length=50,verbose_name=u "nickname", default= "") birthday = models.DateField (verbose_name=u "birthday") Blank=True) gender = models.CharField (choices= (('male',u' male'), ('female',u' female'), default= "female", max_length=6) address = models.CharField (max_length=100,default=u "") mobile = models.CharField (max_length=11,null=True,blank=True) image = models.ImageField (upload_to= "image/%Y/%m", default=u "image/default.png") Max_length=100) class Meta: verbose_name=u "user Information" verbose_name_plural = verbose_name def _ _ unicode__ (self): return self.usernameclass EmailVerifyRecord (models.Model): code = models.CharField (max_length=20,verbose_name=u "CAPTCHA") email = models.EmailField (max_length=50,verbose_name=u "mailbox") send_type = models.CharField (max_length=10,choices= (("register", u "register") ("forget", u "retrieve password"),) send_time = models.DateTimeField (default=datetime.now (), verbose_name=u "add time") class Meta: verbose_name=u "mailbox verification code" verbose_name_plural = verbose_nameclass Banner (models.Model): title = models.CharField (max_length=100,verbose_name=u "title") image = models.ImageField (max_length=100,upload_to= "banner/%Y/%m") Verbose_name=u "round map") url = models.URLField (max_length=100,verbose_name=u "access address") index = models.IntegerField (verbose_name=u "sequence", default=100) add_time = models.DateTimeField (default=datetime.now (), verbose_name=u "add time") class Meta: verbose_name=u "round map" verbose_name_plural = verbose_name

Modify INSTALLED_APPS in the configuration file setting.py, add our app users, and add AUTH_USER_MODEL = "users.UserProfile"

INSTALLED_APPS = ['django.contrib.admin',' django.contrib.auth', 'django.contrib.contenttypes',' django.contrib.sessions', 'django.contrib.messages',' django.contrib.staticfiles', 'users',] AUTH_USER_MODEL = "users.UserProfile"

Run python manage.py runserver 0.0.0.0 9000

Resolve the problem:

Pip3 install Pillow (install Pillow package)

Python manage.py makemigrations users

Python manage.py migrate users

Resolve users.0001_initial and comment out the django.contrib.admin in INSTALLED_APPS in the configuration file

Course models design

Modify the models under the course directory

# _ * _ encoding:utf-8 _ * _ from _ future__ import unicode_literalsfrom datetime import datetimefrom django.db import models# Create your models here.class Course (models.Model): name= models.CharField (max_length=50,verbose_name=u "course name") desc = models.CharField (max_length=300,verbose_name=u "course description") detail = models.TextField (verbose_name=u "course details") degree = models.CharField (max_length=2,choices= (('cj',' beginner')) ('zj',' Intermediate'), ('gj',' Advanced')) learn_time = models.IntegerField (default=0,verbose_name=u "Learning time") students = models.IntegerField (default=0,verbose_name=u "number of students") fav_nums = models.IntegerField (default=0,verbose_name=u "Collection") image = models.ImageField (max_length=100,verbose_name= "cover Image") Upload_to= "courses/%Y/%m") click_nums = models.IntegerField (default=0,verbose_name=u "clicks") add_time = models.DateTimeField (default=datetime.now,verbose_name=u "add time") class Meta: verbose_name=u "course" verbose_name_plural = verbose_nameclass Lesson (models.Model): course = models.ForeignKey (Course,verbose_name=u "course", on_delete=models.CASCADE) name= models.CharField (max_length=100 Verbose_name=u "chapter name") add_time = models.DateTimeField (default=datetime.now, verbose_name=u "add time") class Meta: verbose_name=u "chapter" verbose_name_plural = verbose_nameclass Video (models.Model): lesson = models.ForeignKey (Lesson,verbose_name=u "chapter", on_delete=models.CASCADE) name= models.CharField (max_length=100, verbose_name=u "video name") add_time = models.DateTimeField (default=datetime.now Verbose_name=u "add time") class Meta: verbose_name=u "Video" verbose_name_plural = verbose_nameclass CourseResource (models.Model): course = models.ForeignKey (Course, verbose_name=u "course", on_delete=models.CASCADE) name= models.CharField (max_length=100, verbose_name=u "name") download = models.FileField (upload_to= "course/recourse/%Y/%m", verbose_name=u "Resource File") Max_length=100) add_time = models.DateTimeField (default=datetime.now, verbose_name=u "add time") class Meta: verbose_name=u "course Resources" verbose_name_plural = verbose_name

Modify the INSTALLED_APPS in the configuration file setting.py to add our app course

INSTALLED_APPS = ['django.contrib.admin',' django.contrib.auth', 'django.contrib.contenttypes',' django.contrib.sessions', 'django.contrib.messages',' django.contrib.staticfiles', 'users',' course',]

Run python manage.py runserver 0.0.0.0 9000

Reason

After django2.0, you need to add the on_delete option when defining foreign keys and one-to-one relationships. This parameter is used to avoid data inconsistency between the two tables, otherwise an error will be reported:

TypeError: init () missing 1 required positional argument: 'on_delete'

When it comes to foreign keys, you need to change to

Course = models.ForeignKey (Course,verbose_name=u "course", on_delete=models.CASCADE)

Organization models design

Modify the models under the organization directory

# _ * _ encoding:utf-8 _ * _ from _ future__ import unicode_literalsfrom datetime import datetimefrom django.db import models# Create your models here.class CityDict (models.Model): name= models.CharField (max_length=20, verbose_name=u "city name") desc = models.CharField (max_length=200,verbose_name=u "city description") add_time = models.DateTimeField (default=datetime.now Verbose_name=u "add time") class Meta: verbose_name=u "City" verbose_name_plural = verbose_nameclass CourseOrg (models.Model): name= models.CharField (max_length=50,verbose_name=u "Organization name") desc = models.TextField (verbose_name=u "Organization description") click_nums = models.IntegerField (default=0,verbose_name=u "clicks") fav_nums = models.IntegerField (default=0 Verbose_name=u "favorites") image = models.ImageField (upload_to= "org/%Y/%m", verbose_name=u "cover", max_length=100) address = models.CharField (max_length=150,verbose_name=u "institutional address") city = models.ForeignKey (CityDict,verbose_name=u "city", on_delete=models.CASCADE) add_time = models.DateTimeField (default=datetime.now Verbose_name=u "add time") class Meta: verbose_name=u "Curriculum Institution" verbose_name_plural = verbose_nameclass Teacher (models.Model): org = models.ForeignKey (CourseOrg,verbose_name=u "Organization", on_delete=models.CASCADE) name= models.CharField (max_length=50, verbose_name=u "teacher's name") work_years = models.IntegerField (default=0 Verbose_name=u "working years") work_company = models.CharField (max_length=50,verbose_name=u "working company") work_position = models.CharField (max_length=50,verbose_name=u "company position") points = models.CharField (max_length=50,verbose_name=u "teaching characteristics") click_nums = models.IntegerField (default=0, verbose_name=u "clicks") fav_nums = models.IntegerField (default=0 Verbose_name=u "favorites") add_time = models.DateTimeField (default=datetime.now, verbose_name=u "add time") class Meta: verbose_name=u "teacher" verbose_name_plural = verbose_name

Modify the INSTALLED_APPS in the configuration file setting.py to add our app organization

INSTALLED_APPS = ['django.contrib.admin',' django.contrib.auth', 'django.contrib.contenttypes',' django.contrib.sessions', 'django.contrib.messages',' django.contrib.staticfiles', 'users',' course', 'organization' ] operation models Design # _ * _ encoding:utf-8 _ * _ from _ _ future__ import unicode_literalsfrom datetime import datetimefrom django.db import modelsfrom users.models import UserProfilefrom course.models import Course# Create your models here.class UserAsk (models.Model): name= models.CharField (max_length=20,verbose_name=u "name") mobile = models.CharField (max_length=11,verbose_name=u "Mobile") course_name = models.CharField (max_length=50) Verbose_name=u "course name") add_time = models.DateTimeField (default=datetime.now,verbose_name=u "add time") class Meta: verbose_name=u "user consultation" verbose_name_plural = verbose_nameclass CourseComments (models.Model): # course Review user = models.ForeignKey (UserProfile,verbose_name=u "user", on_delete=models.CASCADE) course = models.ForeignKey (Course,verbose_name=u "course" On_delete=models.CASCADE) comments = models.CharField (max_length=200,verbose_name=u "comment") add_time = models.DateTimeField (default=datetime.now,verbose_name=u "comment time") class Meta: verbose_name=u "course Review" verbose_name_plural = verbose_nameclass UserFavorite (models.Model): user = models.ForeignKey (UserProfile,verbose_name=u "user", on_delete=models.CASCADE) fav_id = models.IntegerField (default=0 Verbose_name=u "data id") fav_type = models.IntegerField (choices= ((1)), (2)), (3)), default=1, verbose_name=u "collection type") add_time = models.DateTimeField (default=datetime.now) Verbose_name=u "favorite time") class Meta: verbose_name=u "user favorites" verbose_name_plural = verbose_nameclass UserMessage (models.Model): user = models.ForeignKey (UserProfile, verbose_name=u "receiving user", on_delete=models.CASCADE) message = models.CharField (max_length=500,verbose_name=u "message content") has_read = models.BooleanField (default=False Verbose_name=u "read") add_time = models.DateTimeField (default=datetime.now,verbose_name=u "add time") class Meta: verbose_name=u "user Information" verbose_name_plural = verbose_nameclass UserCourse (models.Model): user = models.ForeignKey (UserProfile, verbose_name=u "user", on_delete=models.CASCADE) course = models.ForeignKey (Course, verbose_name=u "course" On_delete=models.CASCADE) add_time = models.DateTimeField (default=datetime.now, verbose_name=u "add time") class Meta: verbose_name=u "user course" verbose_name_plural = verbose_name

Modify the INSTALLED_APPS in the configuration file setting.py to add our app operation

# _ * _ encoding:utf-8 _ * _ from _ future__ import unicode_literalsfrom datetime import datetimefrom django.db import modelsfrom users.models import UserProfilefrom course.models import Course# Create your models here.class UserAsk (models.Model): name= models.CharField (max_length=20,verbose_name=u "name") mobile = models.CharField (max_length=11,verbose_name=u "mobile phone") course_name = models.CharField (max_length=50,verbose_name=u "course name") add_time = models.DateTimeField (default=datetime.now Verbose_name=u "add time") class Meta: verbose_name=u "user consultation" verbose_name_plural = verbose_nameclass CourseComments (models.Model): # course Review user = models.ForeignKey (UserProfile,verbose_name=u "user", on_delete=models.CASCADE) course = models.ForeignKey (Course,verbose_name=u "course", on_delete=models.CASCADE) comments = models.CharField (max_length=200 Verbose_name=u "comments") add_time = models.DateTimeField (default=datetime.now,verbose_name=u "comment time") class Meta: verbose_name=u "course reviews" verbose_name_plural = verbose_nameclass UserFavorite (models.Model): user = models.ForeignKey (UserProfile,verbose_name=u "users", on_delete=models.CASCADE) fav_id = models.IntegerField (default=0,verbose_name=u "data id") fav_type = models.IntegerField (choices= ((1) Add_time = models.DateTimeField (default=datetime.now, verbose_name=u "collection time") class Meta: verbose_name=u "user collection" verbose_name_plural = verbose_nameclass UserMessage (models.Model): user = models.ForeignKey (UserProfile) Verbose_name=u "receiving user", on_delete=models.CASCADE) message = models.CharField (max_length=500,verbose_name=u "message content") has_read = models.BooleanField (default=False,verbose_name=u "read") add_time = models.DateTimeField (default=datetime.now Verbose_name=u "add time") class Meta: verbose_name=u "user Information" verbose_name_plural = verbose_nameclass UserCourse (models.Model): user = models.ForeignKey (UserProfile, verbose_name=u "user", on_delete=models.CASCADE) course = models.ForeignKey (Course, verbose_name=u "course", on_delete=models.CASCADE) add_time = models.DateTimeField (default=datetime.now Verbose_name=u "add time") class Meta: verbose_name=u "user course" verbose_name_plural = verbose_name

Put the four app under the apps package

Because there are too many app, it is difficult to manage, so put them under the apps directory for management.

Write the app path to the configuration file setting.py to prevent package import from failing

Import osimport sys# Build paths inside the project like this: os.path.join (BASE_DIR,...) BASE_DIR = os.path.dirname (os.path.dirname (os.path.abspath (_ _ file__) sys.path.insert (0paper os.path.join (BASE_DIR,'apps'))

Python manage.py makemigrations

Python manage.py migrate

Generate a data table

> run python manage.py runserver 0.0.0.0 9000

The above is all the content of the article "sample Analysis of Django Design in Python". Thank you for reading! I believe we all have a certain understanding, hope to share the content to help you, if you want to learn more knowledge, welcome to follow the industry information channel!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report