Django 使用 url 搜索用户
Django searching for user with url
我对 Django 有疑问。我尝试通过获取输入值并将此值附加到我的 url 来搜索用户,这样人们基本上也可以通过在 url 中键入名称来进行搜索(就像通过 Instagram 一样)。例如:“localhost/name”,它向我提供了用户的所有信息。尽管该值在 url 中并且我有一个动态 url 函数,但它不起作用。我在这里阅读了很多问题,但 none 对我有用。提前致谢。
urls.py
path("<str:name>/", views.search, name="search"),
views.py
@login_required(login_url="login")
def search(response, name=None):
if response.method == "POST":
searched = response.POST['searchinput']
users = User.objects.filter(username=name)
return render(response, "main/search.html", {"searched":searched, "user":users})
else:
return redirect("home")
base.html(用于输入)
<form id="searchform" class="form-inline my-2 my-lg-0" name="searchinputform" method="POST" action=" {% url 'search' name=None %}">
{% csrf_token %}
<input class="form-control mr-sm-2" type="search" name="searchinput" id="searchinput" placeholder="Suche" >
<script>
$( "#searchform" ).submit( function( e ) {
e.preventDefault();
document.location = $( "#searchinput" ).val();
} );
</script>
这个代码
users = User.objects.filter(username=name)
不会给你一个用户,而是一个用户列表。如果您只需要一个通过用户名匹配的用户,请将其更改为
user = User.objects.get(username=name.strip())
或
user = User.objects.filter(username=name).first()
我想你想要这样的东西
# urls.py
path("<str:name>/", views.search, name="search")
# views
@login_required(login_url="login")
def search(request, *args, **kwargs):
name = kwargs.get("name")
users = User.objects.filter(username=username)
if users.exists():
return render(request, "main/search.html", {"searched":searched, "users":users})
else:
return redirect("home")
或者如果您想要 单人 用户
# used username instated of name so it be more clear,
# and because names are not unique but usernames are.
path("<str:username>/", views.search, name="search")
# views
@login_required(login_url="login")
def search(request, *args, **kwargs):
username = kwargs.get("username")
user = User.objects.filter(username=username)
if user.exists():
return render(request, "main/search.html", {"searched":searched, "user":user.first()})
else:
return redirect("home")
我对 Django 有疑问。我尝试通过获取输入值并将此值附加到我的 url 来搜索用户,这样人们基本上也可以通过在 url 中键入名称来进行搜索(就像通过 Instagram 一样)。例如:“localhost/name”,它向我提供了用户的所有信息。尽管该值在 url 中并且我有一个动态 url 函数,但它不起作用。我在这里阅读了很多问题,但 none 对我有用。提前致谢。
urls.py
path("<str:name>/", views.search, name="search"),
views.py
@login_required(login_url="login")
def search(response, name=None):
if response.method == "POST":
searched = response.POST['searchinput']
users = User.objects.filter(username=name)
return render(response, "main/search.html", {"searched":searched, "user":users})
else:
return redirect("home")
base.html(用于输入)
<form id="searchform" class="form-inline my-2 my-lg-0" name="searchinputform" method="POST" action=" {% url 'search' name=None %}">
{% csrf_token %}
<input class="form-control mr-sm-2" type="search" name="searchinput" id="searchinput" placeholder="Suche" >
<script>
$( "#searchform" ).submit( function( e ) {
e.preventDefault();
document.location = $( "#searchinput" ).val();
} );
</script>
这个代码
users = User.objects.filter(username=name)
不会给你一个用户,而是一个用户列表。如果您只需要一个通过用户名匹配的用户,请将其更改为
user = User.objects.get(username=name.strip())
或
user = User.objects.filter(username=name).first()
我想你想要这样的东西
# urls.py
path("<str:name>/", views.search, name="search")
# views
@login_required(login_url="login")
def search(request, *args, **kwargs):
name = kwargs.get("name")
users = User.objects.filter(username=username)
if users.exists():
return render(request, "main/search.html", {"searched":searched, "users":users})
else:
return redirect("home")
或者如果您想要 单人 用户
# used username instated of name so it be more clear,
# and because names are not unique but usernames are.
path("<str:username>/", views.search, name="search")
# views
@login_required(login_url="login")
def search(request, *args, **kwargs):
username = kwargs.get("username")
user = User.objects.filter(username=username)
if user.exists():
return render(request, "main/search.html", {"searched":searched, "user":user.first()})
else:
return redirect("home")