Django 5 学习笔记 2024版

打印 上一主题 下一主题

主题 1016|帖子 1016|积分 3048

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 官方中文文档

Django 文档 | Django 文档 | Django (djangoproject.com)
2. 第一个应用 博客

总目录

 

<1>依赖安装:

  1. pip install django
复制代码
<2> 创建 工程 myapp

  1. django-admin startproject myapp
  2. cd myapp
复制代码
<3>创建 应用 app

  1. > python manage.py startapp app
复制代码
<4> 设置模型生成数据库表 

设置数据库: myapp/settings.py
对应文件: app/models.py
  1. python manage.py makemigrations
  2. python manage.py migrate
复制代码
<5> 设置文件\路由\视图


<6> 设置 后台

主要文件: app/admin.py
生成管理员账号:
  1. python manage.py createsuperuser
复制代码
账号:admin
邮箱:admin@qq.com
密码:abc123
<7> 运行服务器

  1. python manage.py runserver
  2. python manage.py runserver 0.0.0.0:8080
复制代码
<8> 美化 后台页面



  1. pip install django-simpleui
复制代码
myapp/setting.py 
  1. INSTALLED_APPS = [
  2.     'simpleui', # 注意这里
  3.     'django.contrib.admin',
  4.     'django.contrib.auth',
  5.     'django.contrib.contenttypes',
  6.     'django.contrib.sessions',
  7.     'django.contrib.messages',
  8.     'django.contrib.staticfiles',
  9.     ...     
  10. ]
复制代码
3. 文件参考例:

app/templates/app/post_list.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>Blog</title>
  5. {% load static %}
  6.    <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
  7. </head>
  8. <body>
  9.     <h1>博客</h1>
  10.     {% for post in posts %}
  11.         <div>
  12.             <h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
  13.             <p>{{ post.content|truncatewords:30 }}</p>
  14.             <p>{{post.f_name}} 发布于 </p>
  15.         </div>
  16.     {% endfor %}
  17. <img  class="bd-placeholder-img" width="200" height="250" src="{{ post.icon2.url }}" alt="" srcset="">
  18. </body>
  19. </html>
复制代码
app/templates/app/post_detail.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <title>{{ post.title }}</title>
  5. </head>
  6. <body>
  7.     <img src="{{ post.image.url}}" alt="" srcset="">
  8.     <h1>{{ post.title }}</h1>
  9.     <p>{{ post.content }}</p>
  10.     <p>Published: {{ post.created_at }}</p>
  11. </body>
  12. </html>
复制代码

app/admin.py

  1. # from django.contrib import admin
  2. # Register your models here.
  3. from django.contrib import admin
  4. from .models import Post, pru ,Netsite
  5. @admin.register(Post)
  6. class PostAdmin(admin.ModelAdmin):
  7.     list_display = ('title', 'author','other','created_at', 'updated_at', 'publish_date')
  8. class PruAdmin(admin.ModelAdmin):
  9.     list_display = ('title','p_name', 'P_jg','p_sl')
  10. admin.site.register(pru, PruAdmin)
  11. admin.site.site_header='BPC管理后台'
  12. admin.site.site_title='BPC管理后台'
  13. admin.site.index_title='BPC管理后台'
  14. class NetAdmin(admin.ModelAdmin):
  15.     list_display = ('title', 'content')
  16. admin.site.register(Netsite, NetAdmin)
复制代码
 


app/models.py

  1. # from django.db import models
  2. # Create your models here.
  3. from django.db import models
  4. class Post(models.Model):
  5.     title = models.CharField(max_length=200 , verbose_name="标题" )
  6.     author = models.CharField(max_length=100, verbose_name="作者", default="匿名") # 添加作者字段
  7.     other = models.CharField(max_length=100, verbose_name="另外", default="other") # 添加作者字段
  8.     content = models.TextField()
  9.     # f_name = models.CharField("客户姓名", max_length=30)
  10.     created_at = models.DateTimeField(auto_now_add=True)
  11.     updated_at = models.DateTimeField(auto_now=True)
  12.     publish_date = models.DateField(null=True)
  13.     icon = models.FileField(upload_to='blog\static\img', null=True)
  14.     # icon2 = models.ImageField(upload_to='media/', null=True)
  15.     icon2 = models.ImageField(default='bank.png', blank=True)
  16. class pru(models.Model):
  17.     title = models.CharField(max_length=200 , verbose_name="标题", default="标题")
  18.     p_name = models.CharField(max_length=200 , verbose_name="名字")
  19.     P_jg = models.CharField(max_length=100, verbose_name="价格", default="20") # 添加作者字段
  20.     p_sl = models.CharField(max_length=100, verbose_name="数量", default="1") # 添加作者字段
  21.     content = models.TextField()   
  22.     def __str__(self):
  23.         return self.title
  24.    
  25. class Netsite(models.Model):
  26.     title = models.CharField(max_length=200 , verbose_name="标题", default="标题")
  27.     content = models.TextField( verbose_name="内容", default="http://")
复制代码
app/urls.py

  1. from django.urls import path
  2. from . import views
  3. urlpatterns = [
  4.     path('', views.post_index, name='post_index'),
  5.     path('', views.post_list, name='post_list'),
  6.     path('post/<int:pk>/', views.post_detail, name='post_detail'),
  7. ]
复制代码
app/views.py

  1. # from django.shortcuts import render
  2. # Create your views here.
  3. from django.shortcuts import render
  4. from .models import Post, pru , Netsite
  5. def post_index(request):
  6.     posts = Post.objects.all()
  7.     Netsites = Netsite.objects.all()
  8.     return render(request, 'app/index.html', {'posts': posts, 'Netsites': Netsites})
  9. def post_list(request):
  10.     posts = Post.objects.all()
  11.     return render(request, 'app/post_list.html', {'posts': posts})
  12. def pru_list(request):
  13.     prus = pru.objects.all()
  14.     return render(request, 'app/post_list.html', {'prus': prus})
  15. def post_detail(request, pk):
  16.     post = Post.objects.get(pk=pk)
  17.     return render(request, 'app/post_detail.html', {'post': post})
复制代码
myapp/settings.py

  1. # Application definition
  2. INSTALLED_APPS = [
  3.     'simpleui', # 管理后台
  4.     'django.contrib.admin',
  5.     'django.contrib.auth',
  6.     'django.contrib.contenttypes',
  7.     'django.contrib.sessions',
  8.     'django.contrib.messages',
  9.     'django.contrib.staticfiles',
  10.     'app',
  11. ]
  12. MIDDLEWARE = [
  13.     'django.middleware.security.SecurityMiddleware',
  14.     'django.contrib.sessions.middleware.SessionMiddleware',
  15.     'django.middleware.common.CommonMiddleware',
  16.     # 'django.middleware.csrf.CsrfViewMiddleware',
  17.     'django.contrib.auth.middleware.AuthenticationMiddleware',
  18.     'django.contrib.messages.middleware.MessageMiddleware',
  19.     'django.middleware.clickjacking.XFrameOptionsMiddleware',
  20. ]
  21. ALLOWED_HOSTS = ['*'] # 允许所有主机访问
  22. # Internationalization
  23. # https://docs.djangoproject.com/en/5.1/topics/i18n/
  24. LANGUAGE_CODE = 'zh-hans'  # 中文,简体
  25. TIME_ZONE = 'Asia/Shanghai'  # 中国标准时间
  26. # LANGUAGE_CODE = 'en-us'
  27. # TIME_ZONE = 'UTC'
  28. USE_I18N = True
  29. USE_TZ = True
  30. # Static files (CSS, JavaScript, Images)
  31. # https://docs.djangoproject.com/en/5.1/howto/static-files/
  32. STATIC_URL = 'static/'
  33. STATIC_DIR = [os.path.join(BASE_DIR, 'static')]
  34. MEDIA_URL = 'media/'
  35. MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  36. # Default primary key field type
  37. # https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
  38. DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
  39. # 隐藏右侧SimpleUI广告链接和使用分析
  40. SIMPLEUI_HOME_INFO = False
  41. SIMPLEUI_ANALYSIS = False
复制代码
myapp/urls.py

  1. from django.contrib import admin
  2. from django.urls import include, path
  3. from django.conf import settings
  4. from django.conf.urls.static import static
  5. urlpatterns = [
  6.     path('admin/', admin.site.urls),
  7.     path('app/', include('app.urls')),
  8.     path('', include('app.urls')),
  9. ]
  10. urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
复制代码
4. 关于设置中文表现参考

app/models.py

  1. # 订单表
  2. class Order(models.Model):
  3.     id = models.AutoField(primary_key=True)
  4.     customer_name = models.CharField(max_length=255 ,verbose_name = "订单")
  5.     customer_phone = models.CharField(max_length=20)
  6.     payment_method = models.CharField(max_length=50)
  7.     payment_status = models.BooleanField(default=False)
  8.     date = models.DateField()
  9.     operator = models.CharField(max_length=100)
  10.     verbose_name = "订单"
  11.     class Meta:
  12.         verbose_name = '订单表'
  13.         verbose_name_plural = verbose_name
  14. # 订单详情表
  15. class OrderDetail(models.Model):
  16.     serial_number = models.AutoField(primary_key=True)
  17.     order_id = models.ForeignKey(Order, on_delete=models.CASCADE)
  18.     product = models.CharField(max_length=255)
  19.     quantity = models.IntegerField()
  20.     class Meta:
  21.         verbose_name = '订单详情表'
  22.         verbose_name_plural = verbose_name
复制代码
 app/app.py

  1. from django.apps import AppConfig
  2. class BlogConfig(AppConfig):
  3.     default_auto_field = 'django.db.models.BigAutoField'
  4.     name = 'blog'
  5.     verbose_name = '博客'
复制代码


myapp/settings.py

  1. LANGUAGE_CODE = 'zh-hans'  # 中文,简体
  2. TIME_ZONE = 'Asia/Shanghai'  # 中国标准时间
  3. ALLOWED_HOSTS = ['*'] # 允许所有主机访问
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表