日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django的主要开发流程(以扩充用户模型为例)

發布時間:2024/4/11 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django的主要开发流程(以扩充用户模型为例) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

需求描述

完成個人中心頁面的用戶信息更新
如圖

開發流程(以users為例):

  • startapp創建應用users
  • 寫users下的models
  • 在settings下注冊app
  • makemigrations遷移數據庫
  • 設計路由
  • 視圖
  • 渲染前端模板
  • 1. startapp創建應用

    cookiecutter創建項目時已經幫我們創建好了users
    如果要創建自己的app,則使用

    python manage.py startapp app_name

    2. 寫users下的models.py

    class User(AbstractUser):# blank=True表示前端提交時可以為空, null=True表示數據庫里該字段可以為空nickname = models.CharField(verbose_name='用戶昵稱', blank=True, null=True, max_length=255, default='')job = models.CharField(verbose_name='用戶職業', blank=True, null=True, max_length=50, default='未知')introduction = models.TextField(verbose_name='簡介', blank=True, null=True, default='該用戶很懶,什么都沒留下')avtar = models.ImageField(verbose_name='頭像', upload_to='users/avatars/', blank=True, null=True, default='')address = models.CharField(verbose_name='住址', blank=True, null=True, max_length=50, default='')birthday = models.DateField(verbose_name='生日', blank=True, null=True, default=timezone.now)personal_url = models.URLField(max_length=255, null=True, blank=True, verbose_name='個人鏈接', default='')weibo = models.URLField(max_length=255, null=True, blank=True, verbose_name='微博鏈接', default='')zhihu = models.URLField(max_length=255, null=True, blank=True, verbose_name='知乎鏈接', default='')github = models.URLField(max_length=255, null=True, blank=True, verbose_name='GitHub鏈接', default='')linkedin = models.URLField(max_length=255, null=True, blank=True, verbose_name='LinkedIn鏈接', default='')created_at = models.DateTimeField(auto_now_add=True, verbose_name='創建時間')updated_at = models.DateTimeField(auto_now=True, verbose_name='更新時間')class Meta:verbose_name = '用戶'verbose_name_plural = verbose_namedef __str__(self):return self.username# 前端界面顯示用戶信息 有昵稱則返回昵稱,否則返回用戶名def get_profile_name(self):if self.nickname:return self.nicknamereturn self.usernamedef get_absolute_url(self):return reverse("users:detail", kwargs={"username": self.username})

    3. 在settings下注冊app

    創建項目時已經有了

    LOCAL_APPS = ["mydjango.users.apps.UsersConfig",# Your stuff: custom apps go here ] # https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS

    4. makemigrations遷移數據庫

    python manage.py makemigrations python manage.py migrate

    5. 設計路由

    users下的urls.py

    app_name = "users" urlpatterns = [path("~redirect/", view=user_redirect_view, name="redirect"),path("~update/", view=user_update_view, name="update"),path("<str:username>/", view=user_detail_view, name="detail"), ]

    6. 視圖

    # 更新視圖 class UserUpdateView(LoginRequiredMixin, UpdateView):model = User # 模型fields = ["nickname", "job", "introduction", "avatar", "address", "birthday","personal_url", "weibo", "zhihu", "github", "linkedin"] # 可更新的字段template_name = 'users/user_form.html'def get_success_url(self): # 更新成功后跳轉return reverse("users:detail", kwargs={"username": self.request.user.username})def get_object(self): # 獲取當前登錄的對象return User.objects.get(username=self.request.user.username)def form_valid(self, form):messages.add_message(self.request, messages.INFO, _("Infos successfully updated"))return super().form_valid(form)user_update_view = UserUpdateView.as_view()

    7. 渲染前端模板

    {% extends "base.html" %} {% load crispy_forms_tags %}{% block title %}{{ user.username }}{% endblock %}{% block content %}<h1>{{ user.username }}</h1>{# 增加enctype="multipart/form-data"接收多媒體文件以便上傳頭像 #}<form class="form-horizontal" method="post" enctype="multipart/form-data" action="{% url 'users:update' %}">{% csrf_token %}{{ form|crispy }}<div class="control-group"><div class="controls"><button type="submit" class="btn btn-primary">更新個人信息</button></div></div></form> {% endblock %} 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

    總結

    以上是生活随笔為你收集整理的Django的主要开发流程(以扩充用户模型为例)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。