Search code examples
djangoargumentstypeerror

how do i get the specific profile of user that created a post in django


i ve been stuck for days now trying to find a way to solve this, i am trying to return the specific profile of user that created a post in django but when i try it i get a VectorDetails() missing 1 required positional argument: 'pk'. Let me show my views.py and urls.py

Views.py (views for showing the posts and returning specific users )

def VectorDetails(request, pk, vectors_slug):
    vector = get_object_or_404(Vectors, slug=vectors_slug)
    vectors = Vectors.objects.filter(status='published').order_by('?')[:6]
    creators = Profile.objects.filter(creator=True)
    creator = Profile.get_object_or_404(pk=pk)


    context = {
        'vector': vector,
        'vectors': vectors,
        'creators':creators
    }
    return render(request, 'vector-details.html', context)

views.py (view for returning the specific user)

from django.shortcuts import render, get_object_or_404
from userauths.models import Profile

def creator_profile_detail(request, pk):
    creators = get_object_or_404(Profile, pk=pk)
    
    context = {
        'creators': creators
    }

    return render(request, 'creator_profile_detail.html', context)

urls.py

from django.urls import path
from . import views

app_name = 'creators'

urlpatterns = [
    path('<int:pk>', views.creator_profile_detail, name="creator_profile_detail"),
]

template.html

<div class="premium_uyhau mt-4">
                            <div class="urip_widget_avater">
                                
                                <a href=""><img src="{{vector.creator.profile.image.url}}" class="img-fluid circle" alt=""></a>
                                <div class="veryfied_author"><img src="assets/img/verified.svg" class="img-fluid" width="15" alt=""></div>
                            </div>
                            <div class="widget_avater_124">
                                <h4 class="avater_name_214"><a href="{% url 'creators:creator_profile_detail' creators.pk %}">{{vector.creator|title}}</a></h4>
                                <span>{{vector.creator.profile.bio|title}}</span>
                            </div>
                        </div>

Solution

  • This was how i fixed the bug

    def profile(request, username):
        if request.user.is_authenticated:
            user = get_object_or_404(User, username=username)
            profile = Profile.objects.get(user=user)
            ...
    

    Then in main project urls.py add

        path('u/<username>/', profile, name="profile"),