Django + React 我需要有关表单渲染和身份验证用户的建议

时间:2021-04-10 12:27:08

标签: reactjs django django-rest-framework

我使用 django-rest-framework-simplejwt 进行身份验证。当用户通过reactjs登录时,如何检索登录用户的信息 例如,如果我想将其显示为

欢迎 request.user.username #wrong 我知道。

我对“stackoverflow”和“github”都做了一些研究,但我找不到任何符合我要求的东西,或者我可能在检索用户信息时考虑错了。 你有什么例子可以推荐吗?

后端;

视图.py

class MyTokenObtainPairView(TokenObtainPairView):
serializer_class = MyTokenObtainPairSerializer

Serializer.py

class MyTokenObtainPairSerializer(TokenObtainPairSerializer):

@classmethod
def get_token(cls, user):
    token = super().get_token(user)

    token['is_superuser'] = user.is_superuser

    return token

urls.py

    urlpatterns = [
    #...
    path('api/token/', TokenRefreshView.as_view(), name='token_refresh'),
]

正面

Axios.js

const baseURL = 'http://127.0.0.1:8000/api';

const axiosInstance = axios.create({
    baseURL: baseURL,
    timeout: 5000,
    headers: {
        Authorization: localStorage.getItem('access_token')
            ? 'JWT ' + localStorage.getItem('access_token')
            : null,
        'Content-Type': 'application/json',
        accept: 'application/json',
    },
});...

登录.js

   const handleSubmit = (e) => {
    e.preventDefault();
    console.log(formData);

    axiosInstance
        .post(`token/`, {
            email: formData.email,
            password: formData.password,
        })
        .then((res) => {
            localStorage.setItem('access_token', res.data.access);
            localStorage.setItem('refresh_token', res.data.refresh);
            axiosInstance.defaults.headers['Authorization'] =
                'JWT ' + localStorage.getItem('access_token');});...

我的最后一个问题是如何用记录的类别填充类别下拉菜单,以便在创建帖子时选择类别?

(我只需要一些示例链接的建议)

class Post(models.Model):
    category = models.ForeignKey('category', on_delete=models.CASCADE))
    title= models.CharField(max_length=20)
    ...

0 个答案:

没有答案
相关问题