programing

파이썬에 toString()과 동등한 기능이 있으며, 클래스를 String으로 변환할 수 있습니까?

testmans 2023. 10. 27. 21:47
반응형

파이썬에 toString()과 동등한 기능이 있으며, 클래스를 String으로 변환할 수 있습니까?

저는 파이썬을 시작하는 데 도움이 되기 위해 ToDo 목록 앱을 작성하고 있습니다.앱은 GAE에서 실행되고 있고 저는 데이터스토어에 작업관리 항목을 저장하고 있습니다.저는 모든 사람들의 물건을 그들에게 보여주고 싶고, 그것들만 보여주고 싶습니다.문제는 현재 앱이 모든 사용자에게 모든 항목을 표시하고 있기 때문에 당신이 쓰는 것을 볼 수 있고, 당신이 내가 쓰는 것을 볼 수 있다는 것입니다.저는 할 일을 해야겠다고 생각했습니다.작성자는 문자열에 대한 오브젝트를 작성하고 사용자 이름과 일치하는지 확인하는 것이 좋은 시작이 될 것입니다. 하지만 어떻게 해야 할지 모르겠습니다.

이것이 제 main.py 에 있는 것입니다.

... 
user = users.get_current_user()

if user:
    nickname = user.nickname()
    todos = Todo.all()
    template_values = {'nickname':nickname, 'todos':todos}
...

def post(self):

    todo = Todo()
    todo.author = users.get_current_user()
    todo.item = self.request.get("item")
    todo.completed = False

    todo.put()      
    self.redirect('/')

나의 index.html 나는 원래 이것을 가지고 있었습니다.

<input type="text" name="item" class="form-prop" placeholder="What needs to be done?" required/>
...
 <ul>
{% for todo in todos %}
  <input type="checkbox"> {{todo.item}} <hr />
{% endfor %}
</ul>

하지만 아이템을 만든 사용자에게만 보여주고 싶습니다.한번 해볼까 했는데요.

{% for todo in todos %}
    {% ifequal todo.author nickname %}
  <input type="checkbox"> {{todo.item}} <hr />
    {% endifequal %}
{% endfor %}

헛되이목록이 비어 있습니다.나는 그것이 하기 위해서라고 생각했습니다.작성자가 문자열이 아닙니다.값을 문자열로 읽을 수 있습니까, 아니면 개체를 문자열로 캐스트할 수 있습니까?

감사합니다!

편집: 토도 수업 내용입니다.

class Todo(db.Model):
    author = db.UserProperty()
    item = db.StringProperty()
    completed = db.BooleanProperty()
    date = db.DateTimeProperty(auto_now_add=True)

내 작성자를 StringProperty로 변경하면 부정적인 영향을 미칠까요?어쩌면 저는 캐스팅을 완전히 포기할 수도 있습니다.

python에서 방법은 다음과 비슷합니다.toString()다른 언어의 메서드입니다.문자열로 변환할 개체를 매개 변수로 전달하는 것을 말합니다.내부적으로는 다음과 같이 부릅니다.__str__()문자열 표현을 가져올 매개 변수 개체의 메서드입니다.

그러나 이 경우에는 a를 비교하는 것입니다.UserProperty데이터베이스의 작성자로, 닉네임 문자열이 있는 유형입니다.당신은 비교하고 싶을 것입니다.nickname대신 저자의 소유물.todo.author.nickname당신의 템플릿에.

Python에서 사용할 수 있는 것은 할 수 있습니다.__str__()방법.

우리 반에서는 이런 식으로 무시할 수 있습니다.

class User: 
    def __init__(self):
        self.firstName = ''
        self.lastName = ''
        ...
        
    def __str__(self):
        return self.firstName + " " + self.lastName

달리기를 할때는

print(user)

그것은 그 함수를 부를 것입니다.__str__(self)이름과 성을 인쇄합니다.

str()는 동치입니다.

그러나 쿼리를 필터링해야 합니다.지금 당신의 질문은all()토도즈.

todos = Todo.all().filter('author = ', users.get_current_user().nickname()) 

아니면

todos = Todo.all().filter('author = ', users.get_current_user())

Todo 모델에서 저자를 정의하는 것에 따라. AStringProperty아니면UserProperty.

메모nickname는 방법입니다.방법을 전달하고 있지만 템플릿 값의 결과가 아닙니다.

당신은 다음을 정의해야 합니다.__unicode__method on your model, 그리고 당신이 인스턴스를 참조할 때 템플릿이 자동으로 그것을 호출할 것입니다.

함수 post():

todo.author = users.get_current_user()

그래서 str(할 일)을 얻기 위해서.작성자), str(users.get_current_user ())이 필요합니다.get_current_user() 함수로 반환되는 것은?

객체인 경우 str()" 함수가 포함되어 있는지 확인합니다.

오류가 거기에 있는 것 같습니다.

또 다른 방법은 다음을 사용하는 것입니다.__dict__특수 특성(예:

str(user.__dict__)

아니면

print(user.__dict__)

특수 속성에 대한 자세한 정보는 여기에 있습니다.

언급URL : https://stackoverflow.com/questions/16768302/does-python-have-a-tostring-equivalent-and-can-i-convert-a-class-to-string

반응형