【问题标题】:Getting current username in utils.py django在 utils.py django 中获取当前用户名
【发布时间】:2022-10-15 16:50:04
【问题描述】:

我是 django 的新手,试图在加载页面时创建一个数字序列字段,当前日期时间 + 当前用户名 + 计数(他本月的帖子)+ 1 的组合。为了实现这一点,我使用最初的.

表格.py:

  class PostForm(ModelForm): 
       post_no = forms.CharField(
        label='Post No',initial=getPostNo,
         widget=forms.TextInput(attrs={
            'class': 'form-control',
            'readonly': 'readonly',
            'placeholder':'Post No'

         })

在 utils.py 中 getPostNo 的定义:

def getPostNo:
    from .models import Posts
    m = datetime.now().month
    y = datetime.now().year
    tme = datetime.now().strftime("%d%m%Y")
    cnt = Posts.objects.filter(employee_id=1,post_date__month=m,post_date__year=y).count()+1 #here i need to filter using the current user id logged in . i gave 1 for testing
    return tme+str(cnt)+str(current username) //here i need current username

我无法将登录的用户 ID 从 forms.py 传递给 getPostNo,也无法在 utils.py 中获取 request.user。

请提出正确的方法来做到这一点。

【问题讨论】:

  • 使用request.user
  • 不工作请求未定义错误来了
  • 请提出建议,我如何在 utils.py 或 forms.py 中获取当前用户

标签: python django django-models django-forms


【解决方案1】:

假设您使用的是 Django 的内置 User 模型。

可以直接使用request.user 它给出了登录用户的当前实例或 id 和request.user.username 作为用户名,所以:

def getPostNo():
    from .models import Posts
    m = datetime.now().month
    y = datetime.now().year
    tme = datetime.now().strftime("%d%m%Y")
    cnt = Posts.objects.filter(employee_id=request.user,post_date__month=m,post_date__year=y).count()+1
    return tme+str(cnt)+str(request.user.username)

确保用户已登录。

【讨论】:

  • 谢谢 。我没有使用内置用户,扩展 AbstractUser。我已经尝试获取 request.user - 它抛出错误请求未定义
  • @dej 你能分享你的自定义用户模型吗?
  • 员工类(AbstractUser):employee_id = models.CharField(max_length=25,unique=True) display_name = models.CharField(max_length=50) email = models.EmailField() mobile = models.CharField(max_length=15)
  • @dej 通过编辑在问题中分享它在 cmets 中并不清楚。
  • 应该是def getPostNo(request):
【解决方案2】:

经过几天的努力,解决方案很简单。 只需在视图本身中调用初始化函数 getPostNo 即可。

quote_form = PostForm(initial={'post_no':getPostNo(request.user.pk)})

谢谢大家

【讨论】:

    猜你喜欢
    • 2017-06-03
    • 2021-11-20
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多