如何从 Django 视图中的锚标记获取特定用户的值?

How to get the value for the particular user from the anchor tag in django view?

urls.py

urlpatterns = [
     path('vendors/', views.loomerang_admin_vendors, name="loomerang_admin_vendors"),
     path('vendor_profile/<str:userid>', views.loomerang_admin_vendor_profile, name="loomerang_admin_vendor_profile"),
]

模板

{% for vendor in vendors %} 
  <tr>
    <th scope="row">{{vendor.id}}</th>
      <td>{{vendor.date_joined|date:"d-m-Y"}}</td>
      <td name="vendor_id"><a href="{% url 'loomgerang_admin:loom_admin_vendor_profile' userid %}">{{vendor.userid}}</a></td>
      <td>{{vendor.first_name}}</td>
      <td>{{vendor.status}}</td>
      <td>20-12-2021</td>
      <td>Lokesh</td>
  </tr>
{% endfor %}

views.py

def loomerang_admin_vendor_profile(request, userid):
    print(request.user.userid)
    vendor_name = request.POST.get("vendor_id")
    basic_details = CustomUser.objects.filter(id=request.user.id)
    store_details = basic_details[0].vendor_details.all()
    print(store_details)
    return render(request, 'loom_admin/vendor_profile.html', {'basic_details':basic_details, 'store_details':store_details})

models.py

class CustomUser(AbstractUser):
    username = None
    email = models.EmailField(_('email address'), unique=True)
    mobile_number = models.IntegerField(blank=False, null=True)
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []
    customer = models.BooleanField(default=False, editable=False)
    vendor = models.BooleanField(default=False, editable=False)
    id = models.AutoField(primary_key=True, editable=True)
    userid = models.CharField(max_length=100, unique=True, null=True)
    approved_by = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
    approved_date = models.DateField(null=True, blank=True)
    status = models.CharField(max_length=10,choices=STATUS_CHOICES,default="Waiting")
    objects = UserManager()

    def __str__(self):
        return str(self.userid)

我已将用户的所有详细信息显示为 table。如果我单击一行中的 Id,它会将我重定向到另一个页面并获取特定用户拥有的所有信息。我不知道该怎么做。拜托,期待答案。

你首先必须通过传递给请求的参数 userid 进行过滤,然后你通过模板中的 forloop 获得 id,比如 vendor.userid,我不知道你试图通过获取vendor_name = request.POST.get("vendor_id"),你有不同型号的供应商吗?

def loomerang_admin_vendor_profile(request, userid):
    print(request.user.userid)
    vendor_name = request.POST.get("vendor_id")
    basic_details = CustomUser.objects.filter(id=userid)
    store_details = basic_details[0].vendor_details.all()
    print(store_details)
    return render(request, 'loom_admin/vendor_profile.html', {'basic_details':basic_details, 'store_details':store_details})

{% for vendor in vendors %} 
  <tr>
    <th scope="row">{{vendor.id}}</th>
      <td>{{vendor.date_joined|date:"d-m-Y"}}</td>
      <td name="vendor_id"><a href="{% url 'loomgerang_admin:loom_admin_vendor_profile' vendor.userid %}">{{vendor.userid}}</a></td>
      <td>{{vendor.first_name}}</td>
      <td>{{vendor.status}}</td>
      <td>20-12-2021</td>
      <td>Lokesh</td>
  </tr>
{% endfor %}